Fastapi中使用后台任务
之前在项目中使用是异步非阻塞方式处理线程任务,但是一段时间之后云服务监控提示出现异常,猜测应该是出现了资源阻塞。重新查看fastapi官方文档发现,fastapi其实提供了一个BackgroundTasks的后台任务。
那么就记录一下吧~
from fastapi import FastAPI, BackgroundTasks |
注意点
- 在使用时必须在路径方法中导入并并定义一个参数,声明其类型为BackgroundTasks。
- 后台任务方法可以是
async def
函数,也可以是def
函数,这并不影响函数的执行调用。 - 如果需要执行的是一个繁重的计算且可能需要多个进程运行(如不需要共享内存、变量等),使用其他更大的工具(Celery),他们的效果可能会更好。
- 它们往往需要更复杂的配置、消息/作业队列管理器(RabbitMQ或Redis),但她们允许在多个进程中运行后台任务,尤其是在多服务器中。
- 如果需要从同一个Fastapi应用程序访问变量和对象,或者需要执行小型后台任务,可以简单地使用BackgroundTasks。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Konsh!
评论
ValineDisqus