我使用的是 docker-compose 部署业务。整体是
一个 nginx 容器,做负载均衡
一个 web 容器, --scale web=10 ,直接启动了 10 个,有 nginx 容器做负载均衡,fastapi 后端
一个 celery 容器,和 web 用的一样代码
一个 redis 容器,没有什么用,只是连接内部网络,给 celery 调用

现在启动以后 请求是调用了 delay(),但是 celery 收不到请求。

调用就是在 fastapi 里面简单的把 celery 的函数引用过来了。无法直接使用。请问有合适的教程或者有能帮忙讲讲具体怎么做的朋友们吗~
举报· 76 次点击
登录 注册 站外分享
5 条回复  
djangovcps 小成 2024-8-23 18:38:31
要看下 celery 的配置,或者你先在 ipython 中导入 task delay 试试能不能发送出去
maocat 小成 2024-8-23 18:50:45
看看队列里的消息有没有,再看看 celery 启动的时候注入了这个方法了没有
lesterholy 小成 2024-8-24 04:20:19
1 你的 celery 容器启动的应该是 worker 吧
2 你代码里有定义队列名字吗 如果定义了 启动 worker 的时候也要同样启动相同的队列
3 delay 调用的应该是 task 听你这意思 你的 task 是否有 @task 类似这样的装饰器呢
没有具体代码 实在无法定位问题 建议脱敏以后 贴贴关键代码 或者问问 Claude 之类的 ai
drwebco 小成 2024-8-25 18:10:17

关于 fastapi + celery 使用 docker-compose 部署的疑惑

celery 如果新添加了一个任务,你的数据库会有一条数据,看你用什么保存列队。
如果没有,可能初始化不对,或者调用方法不对,如果数据库有,而不执行,检查消费者程序启动了没有
pioflight 小成 2024-8-26 19:24:22

关于 fastapi + celery 使用 docker-compose 部署的疑惑

worker 和 web service ,容器分开,不然后期够得你受
返回顶部