[英]django-celery-beat spams due tasks
我正在使用django-celery-beat
執行一些每小時/每天的任務。 然而,奇怪的行為讓我無所適從。
我正在使用這段代碼創建一個任務:
periodic_task = apps.get_model('django_celery_beat', 'PeriodicTask')
interval_schedule = apps.get_model('django_celery_beat', 'IntervalSchedule')
schedule, _ = interval_schedule.objects.get_or_create(every=2, period='hours')
periodic_task.objects.update_or_create(
task=TASK,
defaults={'name': '<task description>', 'interval': schedule},
)
其中TASK
是指向此任務的字符串:
@app.task(ignore_result=True)
def task():
<things to do>
pass
在您看到的代碼中,我使用了 2 小時的間隔,一旦我使用celery -A [project-name] beat -l info --scheduler django_celery_beat.schedulers:DatabaseScheduler
開始節拍,就不會彈出錯誤(我沒有不知道它是否真的有效,2小時是很多時間)。 但是,當我將時間間隔更改為 1 小時時,它會發送以下垃圾郵件:
[2021-12-21 15:32:45,333: INFO/MainProcess] Task app.tasks.task[6c0343b0-faf1-4eae-a8e0-721c862120a9] succeeded in 0.0s: None
[2021-12-21 15:32:45,336: INFO/MainProcess] Scheduler: Sending due task <task description> (app.tasks.task)
然后它繼續到永恆,只能用 Ctrl+C 停止。
我確實安裝了 RabbitMQ 管理插件,並且從 UI 看起來一切都很好 - 沒有隊列,沒有任何未確認的內容等。任何線索這可能導致什么?
即使在清除隊列之后,它仍然會發生(使用celery -A [project-name] purge
)。
更新,我在這里找到了答案: https://github.com/celery/django-celery-beat/issues/95 。 我的TIME_ZONE
設置是錯誤的(仍然設置為 UTC 而不是我的實際時區,歐洲/阿姆斯特丹),所以我想這就是它搞砸的地方。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.