超实用 Demo:使用 FastAPI、Celery、RabbitMQ 和 MongoDB 实现一个异步任务工作流

网友投稿 1336 2023-04-23

超实用 Demo:使用 FastAPI、Celery、RabbitMQ 和 *** 实现一个异步任务工作流

超实用 Demo:使用 FastAPI、Celery、RabbitMQ 和 *** 实现一个异步任务工作流

异步任务,是 Web 开发中经常遇到的问题,比如说用户提交了一个请求,虽然这个请求对应的任务非常耗时,但是不能让用户等在这里,通常需要立即返回结果,告诉用户任务已提交。任务可以在后续慢慢完成,完成后再给用户发一个完成的通知。

今天分享一份代码,使用 Celery、RabbitMQ 和 *** 实现一个异步任务工作流,你可以修改 task.py 来实现你自己的异步任务。

架构图如下:

其中 Celery 来执行异步任务,RabbitMQ 作为消息队列,*** 存储任务执行结果,FastAPI 提供 Web 接口。

以上所有模块均可使用 Docker 一键部署。

下面为 Demo 使用方法:

1、确保本机已安装 Docker、Git

2、下载源代码:

3、部署并启动:

4、启动一个异步任务:

任务会发送到消息队列,同时会立即返回一个任务 id:

5、查询任务状态:

任务完成后的返回结果如下:

代码目录结构如下:

其中 app.py 如下:

如果要实现自己的任务队列,就修改 task.py 来添加自己的异步任务,可以整合到自己的项目中。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:面试官问我ES读写数据的过程,结果你能猜到吗?
下一篇:数据库的等待事件分析接口其实比我们想象的更丰富
相关文章