10

我有一个任务需要在 Celery 启动时启动。该任务接下来通过回调 / eta 每 5 分钟运行一次。

我找到了一些关于它的线程,但似乎没有在 Celery 3 上工作。

谢谢你的帮助,阿诺。

4

2 回答 2

19

Celery 的 IRC 频道上的某个人通过使用“worker_ready.connect”信号为我提供了正确的方法:http: //docs.celeryproject.org/en/latest/userguide/signals.html#worker-ready

from celery.signals import worker_ready

@worker_ready.connect
def at_start(sender, **k):
    with sender.app.connection() as conn:
         sender.app.send_task('app.modules.task', args,connection=conn, ...)

它现在就像一个魅力!

于 2013-01-29T18:12:17.753 回答
0

您需要在设置中定义:

import djcelery
djcelery.setup_loader()
CELERY_IMPORTS = ("apps.app_name.module.tasks",)

此外,如果您没有安装 celery 代理,您应该安装一个我正在使用 RabbitMQ,关于如何使用它的非常好的教程,您可以在 celery 文档中找到:

http://docs.celeryproject.org/en/latest/getting-started/brokers/rabbitmq.html

然后从命令行芹菜恶魔开始:

django-admin.py celeryd -v 2 -B -s celery -E -l INFO

于 2013-01-29T11:01:53.437 回答