如何从脚本/模块__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_literals

from 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

回到顶部