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