gpt4 book ai didi

python - 如何使用 celery AsyncTask 的结果回调

转载 作者:行者123 更新时间:2023-12-01 08:56:03 24 4
gpt4 key购买 nike

我有以下情况。

我的客户端将以下任务发送给工作人员:

# client
task = my_task.apply_async((some_params), queue='my_queue')
# task.get() # This blocks

我的worker正确执行任务并返回结果。

因此,使用 task.get() 检索结果可以工作,但会阻塞。现在我想要的是当结果(成功或失败)可用时调用的回调。

Task 有一个 on_success 函数类(class)。但这是用在 worker 身上的。 Similiar Question

有什么想法或解决方案吗?

最佳答案

您可以对任务进行回调,但不能通知或回调调用者或客户端(因为 celery 不在进程中),这将是另一个 celery 任务,必须用作回调。 If you would like to use a callback, you can use celery's link or canvassing functionality .

对于使用启动任务结果的简单回调,您可以执行以下操作:


@app.task
def add(m, n):
return m + n

@app.task
def callback(result):
print(f'My result was {result}')

def client_caller():
add.apply_async(args=(2, 2), link=callback.s())


关于python - 如何使用 celery AsyncTask 的结果回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52764383/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com