芹菜@ task_postrun.connect不触发

时间:2018-08-10 15:33:14

标签: python django celery django-celery

我的signals.py应用中有一个project/jobs。 这是文件:

from celery.signals import task_postrun, after_task_publish
from project.jobs.models import JobModel, JOB_STATUS_CHOICES

@after_task_publish.connect
def task_sent_handler(sender=None, headers=None, body=None, **kwargs):
    info = headers if 'task' in headers else body
    print('after_task_publish for task id {info[id]}'.format(info=info,))

@task_postrun.connect
def task_postrun_handler(task_id=None, **kwargs):
    print('CONNECT', task_id)
    JobModel.objects.filter(task_id=task_id).update(status=JOB_STATUS_CHOICES.SUCCESS)

task_sent_handler被激发而task_postrun_handler没有被激发。

signals.py是由我的AppConfigready()函数中导入的。

这是我的芹菜配置:

CELERY_BROKER_URL = env('CELERY_BROKER_URL')
CELERY_SEND_EVENTS = True
CELERY_RESULT_BACKEND = env('CELERY_RESULT_BACKEND')
CELERY_ACCEPT_CONTENT = ['application/json']
CELERY_RESULT_SERIALIZER = 'json'
CELERY_TASK_SERIALIZER = 'json'
  

关于为何task_postrun可能不会被解雇的任何建议?

它们都是“任务”类别下的事件,所以我看不到为什么一个起作用而另一个却不起作用。

1 个答案:

答案 0 :(得分:0)

配置正确,系统重启后,CONNECT打印件开始出现在celery任务日志中。