如何从脚本/模块__main__启动Celery worker?
我已经Celery
在模块中定义了一个应用程序,现在我想从其模块中的同一模块启动worker __main__
,即通过使用python
-m而不是celery
从命令行运行该模块。我尝试了这个:
app = Celery('project', include=['project.tasks'])# do all kind of project-specific configuration
# that should occur whenever this module is imported
if __name__ == '__main__':
# log stuff about the configuration
app.start(['worker', '-A', 'project.tasks'])
但是现在Celery认为我正在运行没有参数的工作程序:
Usage: worker <command> [options]Show help screen and exit.
Options:
-A APP, --app=APP app instance to use (e.g. module.attr_name)
[snip]
用法消息是您从那里得到的celery --help
,好像没有得到命令一样。我也尝试过
app.worker_main(['-A', 'project.tasks'])
但这抱怨-A
未被认可。
那么我该怎么做呢?或者,如何将回调传递给工作程序以使其记录有关其配置的信息?
回答:
根据Django-Celery模块中的代码,您可以尝试执行以下操作:
from __future__ import absolute_import, unicode_literalsfrom celery import current_app
from celery.bin import worker
if __name__ == '__main__':
app = current_app._get_current_object()
worker = worker.worker(app=app)
options = {
'broker': 'amqp://guest:guest@localhost:5672//',
'loglevel': 'INFO',
'traceback': True,
}
worker.run(**options)
以上是 如何从脚本/模块__main__启动Celery worker? 的全部内容, 来源链接: utcz.com/qa/424141.html