我一直在寻找使用FastAPI实现后台作业的方法。我有一个API /api/event
,它验证传入的请求,并将待处理的事件添加到SQS队列,如果事件被接受,则将HTTP 202(接受)返回给用户,否则返回HTTP 200(OK)。
根据我在FastAPI文档中读到的内容,调用BackgroundTask的方法是通过另一个API。
现在我想做的是,保持一个后台任务运行(如cronjob),该任务轮询SQS队列中的消息,处理这些事件并删除它们。(这部分不应该依赖于API调用)我希望最好在FastAPI项目中完成此操作。
阅读FastAPI文档并没有为我提供足够的信息来实现这一点。我还尝试使用__init__.py
文件调用一个基本的后台作业(打印日期时间),但它控制了FastAPI进程,API变得不可用。
1条答案
按热度按时间vlju58qv1#
有两种方法可以实现这一点
1.使用celery进行事件的异步处理(它确实支持它)
1.将
async
和await
与事件处理函数一起使用正如您提到的,如果您希望在本机FAST API中使用某些功能,那么我认为最好使用
async
,并等待如下所示现在,让我们将上述函数与python内置库
asyncio
结合使用使用
asyncio.gather
收集结果非常简单和聪明更多参考资料: