Django芹菜任务在芹菜服务器启动时立即运行

时间:2013-11-30 07:37:42

标签: python django celery django-celery

我需要找到如何指定一种初始芹菜任务,它将以特别定义的方式启动所有其他任务。这个初始任务应该在芹菜服务器启动时立即运行,永远不会再运行。

2 个答案:

答案 0 :(得分:10)

如何使用celeryd_after_setupceleryd_init信号?

文档中的示例代码:

from celery.signals import celeryd_init

@celeryd_init.connect(sender='worker12@example.com')
def configure_worker12(conf=None, **kwargs):
    ...

答案 1 :(得分:-1)

我找到了这样做的方法。它有一个消极方面 - 不可能指定当前年份,任务将再次运行一年。但通常服务器会更频繁地重启,然后是这段时间。

from celery.task import PeriodicTask

class InitialTasksStarter(PeriodicTask):
    starttime = datetime.now() + timedelta(minutes=1)
    run_every = crontab(month_of_year=starttime.month, day_of_month=starttime.day, hour=starttime.hour, minute=starttime.minute)

    def run(self, **kwargs):
        ....
        return True