Я сталкиваюсь со странным поведением в FastAPI, где мои BackgroundTasks выполняются только тогда, когда они объявлены внутри асинхронной зависимости. Никаких исключений не возникает, маршрут возвращается нормально, но фоновое задание никогда не запускается.
from fastapi import FastAPI, BackgroundTasks, Depends
app = FastAPI()
async def log_something():
print("Background task executed!")
async def dependency(bg: BackgroundTasks):
print("Dependency started")
bg.add_task(log_something)
print("Dependency added task")
return {"ok": True}
@app.get("/test")
async def test_route(data=Depends(dependency)):
print("Route executed")
return {"status": "done"}
Когда я звоню:
curl http://127.0.0.1:8000/test
Я ожидаю увидеть это напечатанным в консоли:
Dependency started
Dependency added task
Route executed
Background task executed!
Что я получаю:
Dependency started
Dependency added task
Route executed
Никакие ошибки не регистрируются, и FastAPI правильно возвращает {"status": "done".
Если я перенесу вызов bg.add_task() в сам маршрут, он будет работать как положено.
FastAPI 0.115.2
Python 3.13
macOS (Apple Silicon)
Подробнее здесь: https://stackoverflow.com/questions/797 ... dependency