簡體   English   中英

Django芹菜任務在芹菜服務器啟動時立即運行

[英]Django celery task run at once on startup of celery server

我需要找到如何指定一種初始芹菜任務,它將以特別定義的方式啟動所有其他任務。 這個初始任務應該在芹菜服務器啟動時立即運行,永遠不會再運行。

使用celeryd_after_setupceleryd_init信號怎么樣?

從文檔中刪除示例代碼:

from celery.signals import celeryd_init

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

我找到了這樣做的方法。 它有一個消極方面 - 不可能指定當前年份,任務將再次運行一年。 但通常服務器更頻繁地重啟,然后這段時間。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM