芹菜:启动时启动任务

Posted

技术标签:

【中文标题】芹菜:启动时启动任务【英文标题】:Celery: launch task on start 【发布时间】:2013-01-12 19:10:59 【问题描述】:

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

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

感谢您的帮助, 阿诺。

【问题讨论】:

【参考方案1】:

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, ...)

它现在就像一个魅力!

【讨论】:

【参考方案2】:

你需要在设置中定义:

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

然后从命令行 celery demo 开始:

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

【讨论】:

您好,感谢您的回答,但我认为这不是我想要的。 CELERY_IMPORTS 设置允许您定义要导入的自定义模块(如果您没有将任务放在 tasks.py 中)。我正在寻找的是一种在守护进程启动时自动启动特定任务的方法。接下来,回调/ETA 系统将完成剩下的工作。感谢您的帮助。

以上是关于芹菜:启动时启动任务的主要内容,如果未能解决你的问题,请参考以下文章

芹菜任务永久启动(未重试)

芹菜任务和xmpp

芹菜中持久的长时间运行的任务

芹菜任务不会在 django 中执行

为啥创建了芹菜任务但未收到

芹菜节拍服务旧(已删除)任务