多码头工人应用程序中的芹菜
Celery in multidocker worker application
项目结构
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 运行芹菜工人。
关于这个我有几个问题。
- 这是构建项目的正确方法吗?
- worker 监听队列应该在哪里定义?
我不会采用这种方法,而是构建一个配置了环境变量的代码库和容器。
由于您希望有不同的“类”工作人员用于自动缩放目的,我会使用 Celery Task Routing 将您的任务推送到适当的队列。
部署工作人员时,celery 有一个参数来定义要处理的队列,因此您只需要更改容器中工作人员的启动命令。最好的办法是将其设置为环境变量,以便您的供应脚本可以轻松启动它。
celery -A proj worker -Q $QUEUE_NAME
这样做的好处是简化了构建、调试和部署过程。
项目结构
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 运行芹菜工人。
关于这个我有几个问题。
- 这是构建项目的正确方法吗?
- worker 监听队列应该在哪里定义?
我不会采用这种方法,而是构建一个配置了环境变量的代码库和容器。
由于您希望有不同的“类”工作人员用于自动缩放目的,我会使用 Celery Task Routing 将您的任务推送到适当的队列。
部署工作人员时,celery 有一个参数来定义要处理的队列,因此您只需要更改容器中工作人员的启动命令。最好的办法是将其设置为环境变量,以便您的供应脚本可以轻松启动它。
celery -A proj worker -Q $QUEUE_NAME
这样做的好处是简化了构建、调试和部署过程。