首页 > 解决方案 > 仅使用 python 生成 celery 工人而不会阻塞

问题描述

我正在运行 celery 4.4.6 版,我正在努力了解如何仅使用 celery 的 python API 而不是 celery 命令行界面 (CLI) 来生成 celery 工作者。我想运行以下简化示例但不阻塞,以便执行最后的打印语句。这样我的代码可以继续运行,如果我愿意,我可以产生额外的工人。

我尝试通过一个论点,{'detach': True}但没有任何成功。我已经看到使用Popen实现我想要的示例的示例,但这涉及使用 CLI 调用 celery。将我实例化的工作人员保留为 python 对象并稍后在代码中引用它们会很好。达到我想要的效果的规范python方式是什么?

from celeryapp import app
from celery.bin.worker import worker

options = {'hostname': 'name', 'pool_cls': 'solo', 'loglevel': 'warning', 'queues': ['myqueue'], 'include': ['tasks']}
w = worker(app=app)
w.run(**options)
print('Worker started.')

celeryapp.py我有:

from celery import Celery
import celeryconfig

# Create Celery app
app = Celery(config_source=celeryconfig)

celeryconfig.py我有:

broker_url = 'redis://localhost:6379'

result_backend = 'redis://localhost:6379'

标签: pythoncelery

解决方案


推荐阅读