[英]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 設置,並讓調度程序獲取更新的信息。
祝你好運。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.