使用芹菜4.1.0我试着用芹菜信号。当使用@task_success
时,我试图读取我应该得到的参数,但它们都是None。
这是信号:
@task_success.connect()
def task_succeeded(result, sender=None, task_id=None, task=None, **kwargs):
print("result: " + str(result))
print("task_id: " + str(task_id))
print("task: " + str(task))
print("sender: " + str(sender))
print("request_id:" + sender.request.id)
信号确实被触发了,我看到了一些打印,但似乎所有参数的值都是None。知道为什么吗?
阅读信号的文档,task_success
只接受两个参数:sender
和result
。
sender
是当前的Task
,而result
是任务执行的当前结果。
因此,在您的示例中,您试图读取一些未定义的参数,并且result
和sender
也被交换。
p.D.:我很晚才回答这个问题,但我是在谷歌上搜索task_success
时发现的。也许将来会帮助别人。
@signals.task_success.connect
def task_success_handler(sender=None, result=None,**kwargs):
# Extract information from the result, such as task ID or any relevant data
task_id = sender.request.id
result = AsyncResult(task_id, app=celery)
state = result.state
status = result.status
print('nn Sucess task Id', task_id)
print('nn Sucess task state', state)
print('nn Sucess task status', status)
print('nnn sucesscalled')
以上代码为我工作