我有一个任务需要在 Celery 启动时启动。该任务接下来通过回调 / eta 每 5 分钟运行一次。
我找到了一些关于它的线程,但似乎没有在 Celery 3 上工作。
谢谢你的帮助,阿诺。
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, ...)
它现在就像一个魅力!
您需要在设置中定义:
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