Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/354.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 工作进程关闭时芹菜活动任务丢失_Python_Django_Celery_Django Celery_Celery Task - Fatal编程技术网

Python 工作进程关闭时芹菜活动任务丢失

Python 工作进程关闭时芹菜活动任务丢失,python,django,celery,django-celery,celery-task,Python,Django,Celery,Django Celery,Celery Task,我使用的是芹菜=4.0.0,当一个任务运行更长的时间,而在此期间工作人员关闭时,我丢失了所有这些任务。如何重新启动所有丢失的任务。提前谢谢。 芹菜=4.0.0 redis=2.10.5您应该覆盖芹菜信号方法。 信号表 为芹菜任务创建一个模型。例如,它的名称是CeleryStask。 在运行任务之前,在CeleryStask模型中创建新的任务对象。当芹菜重新启动并且工人准备就绪时,任务将再次运行 任务。py 这应该是有帮助的-一定要阅读注意事项。 from celery.signals impo

我使用的是芹菜=4.0.0,当一个任务运行更长的时间,而在此期间工作人员关闭时,我丢失了所有这些任务。如何重新启动所有丢失的任务。提前谢谢。 芹菜=4.0.0
redis=2.10.5

您应该覆盖芹菜信号方法。 信号表

为芹菜任务创建一个模型。例如,它的名称是CeleryStask。 在运行任务之前,在CeleryStask模型中创建新的任务对象。当芹菜重新启动并且工人准备就绪时,任务将再次运行

任务。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')