gpt4 book ai didi

python - 创建 celery 任务然后同步运行

转载 作者:IT老高 更新时间:2023-10-28 20:53:18 26 4
gpt4 key购买 nike

我的应用在一个页面上收集了一堆电话号码。一旦用户点击提交按钮,我就会创建一个 celery 任务来调用每个号码并发出提醒消息,然后将他们重定向到一个页面,在那里他们可以看到有关调用的实时更新。我正在使用网络套接字实时更新每个调用的状态,并且需要同步执行任务,因为我只能从一个号码拨出。

所以一旦第一个调用/任务完成,我希望下一个调用/任务启动。

我看了CELERY_ALWAYS_EAGER设置,但它刚刚经历了第一次迭代并停止了。

@task
def reminder(number):
# CODE THAT CALLS NUMBER HERE....

def make_calls(request):
for number in phone_numbers:
reminder.delay(number)

return redirect('live_call_updates')

最佳答案

如果您查看 celery DOCS on tasks您会看到要同步调用任务,您使用 apply() 方法而不是 apply_async() 方法。

所以在你的情况下你可以使用:

 reminder.apply(args=[number])

DOCS 还指出:
如果设置了 CELERY_ALWAYS_EAGER 设置,它将被本地 apply() 调用替换。

感谢@JivanAmara,他在评论中重申,当使用 apply() 时,任务将在本地运行(在调用它的服务器/计算机中)。如果您打算跨多个服务器/机器运行任务,这可能会产生影响。

关于python - 创建 celery 任务然后同步运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26241381/

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