python - 多码头工人应用程序中的芹菜
问题描述
项目结构
app/
flask_app/
app.py
Dockerfile
worker_type_1/
worker_core/
core.py
celery.py
Dockerfile
worker_type_3/
worker_core/
core.py
celery.py
Dockerfile
worker_type_3/
worker_core/
core.py
celery.py
Dockerfile
每个工人执行不同的任务。任务由 flask_app 完成。Dockerfile 运行 celery worker。
我对此有几个问题。
- 这是构建项目的正确方法吗?
- 应该在哪里定义工人侦听的队列?
解决方案
我不会采用这种方法,而是构建一个配置了环境变量的代码库和容器。
由于您希望有不同的“类”工作人员用于自动缩放目的,我会使用Celery Task Routing将您的任务推送到适当的队列。
部署工作人员时,芹菜有一个参数来定义要从哪个队列工作,因此您只需要更改容器中工作人员的启动命令。您最好的选择是将其设置为环境变量,以便您的配置脚本可以轻松启动它。
celery -A proj worker -Q $QUEUE_NAME
这样做的好处是更简单的构建、调试和部署过程。
推荐阅读
- powershell - 在 ForEach 循环中使用 Where 方法
- python - 如何将“networkx.digraph”视为无向
- regex - 在 VScode 中查找和删除组标签
- python - 检查每个字母
- uwp - 为什么 Header 比 Title 大,什么时候使用?
- vulkan - Vulkan 队列提交同步 - vkWaitForFences vs vkQueueWaitIdle
- javascript - 无法在基于反应的应用程序上单击带有 selenium webdriver 的按钮
- python - session.add() 和会话方法不存在
- ios - SwiftUI:我想每天显示一个随机元素,即使在重新启动应用程序之后也是如此
- typescript - 类型“{}”上不存在属性“onMessage”。& “{}”类型的参数不能分配给“null”类型的参数