簡體   English   中英

工人關閉時,芹菜活動任務丟失

[英]Celery Active Task lost on worker shutdown

我正在使用celery = 4.0.0,當任務運行較長時間並且在此期間工人關閉時,我丟失了所有這些任務。 如何重新啟動所有丟失的任務。 提前致謝。 芹菜= 4.0.0重做= 2.10.5

您應該重寫芹菜信號方法。 信號清單 http://docs.celeryproject.org/en/latest/userguide/signals.html

為芹菜任務創建模型。 例如,它的名稱是CeleryTask。 在運行任務之前,請在CeleryTask模型中創建新的任務對象。 當芹菜重新啟動並且工作人員准備就緒時,任務將再次運行。

task.py

from celery.signals import worker_ready, task_prerun

def on_task_prerun(*args, **kwargs):
    from .models import CeleryTask

    task_properties = kwargs['task']

    ctask = CeleryTask.objects.create(
        task_name=task_properties.name,
        task_args=task_properties.request.args
    )

def on_worker_ready(*args, **kwargs):
    from .models import CeleryTask
    from celery.execute import send_task

    tasks = CeleryTask.objects.all()

    for ctask in tasks:
        send_task(ctask.task_name, ctask.task_args)

worker_ready.connect(on_worker_ready, dispatch_uid='on_worker_ready')
task_prerun.connect(on_task_prerun, dispatch_uid='on_task_prerun')

暫無
暫無

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

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