簡體   English   中英

django-celery-beat 垃圾郵件到期任務

[英]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.

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