簡體   English   中英

Celery-beat 不適用於日常安排

[英]Celery-beat doesnt work with daily schedule

我試圖用 celery-beat 運行任務。 當我按分鍾或小時計划啟動它時,任務會正確啟動,但如果我嘗試運行每日任務,它會顯示在 django 管理面板中,但沒有及時運行。

它必須按以下方式工作:常規 django 代碼在 Party class 中啟動“start_primaries”任務:

def setup_task(self):
    schedule, created = IntervalSchedule.objects.get_or_create(every=7, period=IntervalSchedule.DAYS)
    self.task = PeriodicTask.objects.create(
        name=self.title + ', id ' + str(self.pk),
        task='start_primaries',
        interval=schedule,
        args=json.dumps([self.id]),
        start_time=timezone.now()
    )
    self.save()

是否有一些設置可以限制任務的生命周期? 目前我在 Django 設置中有以下內容:

CELERY_TASK_TRACK_STARTED = True
CELERY_TASK_TIME_LIMIT = 950400
CELERY_BROKER_URL = 'redis://redis:6379/0'
CELERY_RESULT_BACKEND = 'django-db'
CELERY_BEAT_SCHEDULER = 'django_celery_beat.schedulers:DatabaseScheduler'
CELERY_TASK_RESULT_EXPIRES = None
CELERY_BROKER_TRANSPORT_OPTIONS = {'visibility_timeout': 950400}

終於在github找到了答案。

首先,您應該將 'last_run_at' 設置為 start_time - 間隔,這樣節拍將檢查上次“執行”的時間,因此下一次執行將在 start_time。

其次,更新您的 start_time 設置,並讓調度程序獲取更新的信息。

祝你好運。

https://github.com/celery/django-celery-beat/issues/259

暫無
暫無

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

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