【发布时间】:2022-01-05 11:06:50
【问题描述】:
我有一个资源密集型异步方法,我想将它作为后台任务运行。它的示例代码如下所示:
@staticmethod
async def trigger_task(id: str, run_e2e: bool = False):
try:
add_status_for_task(id)
result1, result2 = await task(id)
update_status_for_task(id, result1, result2)
except Exception:
update_status_for_task(id, 'FAIL')
@router.post("/task")
async def trigger_task(background_tasks: BackgroundTasks):
background_tasks.add_task(EventsTrigger.trigger_task)
return {'msg': 'Task submitted!'}
当我触发这个端点时,我期望一个即时输出:{'msg': 'Task submitted!'}。而是等待 api 输出,直到任务完成。我正在关注来自fastapi 的文档。
fastapi: v0.70.0 蟒蛇:v3.8.10
我相信这个问题类似于here 所描述的问题。 请求帮助以使其成为非阻塞调用。
【问题讨论】: