Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/444.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 芹菜@task\u postrun.connect未点火_Python_Django_Celery_Django Celery - Fatal编程技术网

Python 芹菜@task\u postrun.connect未点火

Python 芹菜@task\u postrun.connect未点火,python,django,celery,django-celery,Python,Django,Celery,Django Celery,我的项目/作业应用程序中有一个signals.py。 这是文件: 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, **kwarg

我的
项目/作业
应用程序中有一个
signals.py
。 这是文件:

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\u sent\u handler
被激发,而
task\u postrun\u handler
未被激发

signals.py
由我的
AppConfig
ready()
函数中导入

这是我的芹菜配置:

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'
关于为什么不能启动
任务\u postrun
的任何建议


它们都是任务类别下的事件,因此我不明白为什么一个有效,另一个无效。

配置是正确的,在系统重新启动后,
CONNECT
打印开始显示在芹菜任务日志上。

是的,您通常必须确保“手动”连接您的信号。参见,例如,在哪个模块中导入信号?此模块可能仅在发送任务的进程中执行(因此在任务发布后发出
信号),而不是在运行任务的进程中执行(发出
任务运行后发出
信号)。@schwobaseggl我在
models.py
中导入信号,然后将其移动到我的
芹菜.py
文件中。除了导入之外,我什么都不做。而且,信号是由芹菜发出的,所以我不确定哪种型号加载信号有什么关系。py?已更新问题以删除
signals.py
部分