본문으로 바로가기
COMMUNITY모든 이야기

FastAPI 비동기 DB 세션 사용 시 RuntimeError: Task attached to a different loop 발생

빗방울 2026.10.30 09:30 2분 읽기 조회 5 · 추천 1

사이드 프로젝트에서 FastAPI와 SQLAlchemy async session을 사용 중입니다. 외부 API 호출 후 DB 업데이트 로직에서 에러가 납니다.

코드:

import asyncio
from sqlalchemy.ext.asyncio import create_async_engine, AsyncSession
from sqlalchemy.orm import sessionmaker

engine = create_async_engine("postgresql+asyncpg://user:pass@localhost/db")
AsyncSessionLocal = sessionmaker(engine, class_=AsyncSession, expire_on_commit=False)

async def update_data(session, data):
    await session.execute("UPDATE users SET name=:name WHERE id=1", {"name": data})
    await session.commit()

async def main():
    async with AsyncSessionLocal() as session:
        # 외부 API 모킹
        await asyncio.sleep(1) 
        await update_data(session, "test_name")

asyncio.run(main())

오류: RuntimeError: Task <Task pending> attached to a different loop

시도: asyncio.run() 대신 loop.run_until_complete() 사용, 세션 생성 위치 변경.

질문: 비동기 세션을 외부 함수로 넘길 때 이벤트 루프가 꼬이는 건지, 어떻게 해결해야 합니까?

모든 이야기1478

가벼운 안부부터 깊은 생각까지, 함께 나눠요.

글쓰기
총 1478개의 이야기
댓글