芹菜连锁店:是否需要等待才能获得结果?

时间:2018-08-13 14:10:11

标签: python-3.x celery worker celery-task

因此,我在Python 3中有一个芹菜工作者运行的任务链。当前,我使用以下代码获取并打印链的最终结果:

while not result.ready():
    pass
print(result.get())

我在有和没有 while-loop 的情况下都运行了代码,看来 while-loop 是多余的。

我的问题是:“是否有必要使用 while循环?”

1 个答案:

答案 0 :(得分:1)

如果冗余地表示您的代码在没有while循环的情况下运行良好,那么我敢说不需要循环。但是,如果由于尝试打印尚不存在的内容而在没有循环的情况下抛出错误,则应保留该错误。但是,这可能是一个问题,因为空的while循环意味着您只是在检查相同的变量,因为计算机可以物理地对其进行处理,因此会耗尽您的CPU。我建议如下所示:

import time

t = 1 #The number of seconds you want to wait between checking if the result is ready

while not result.ready():
    time.sleep(t)
print(result.get())

您可以将t设置为任何有意义的值。如果您正在运行的任务要花费几个小时,则可以将其设置为60,然后在一分钟之内即可得到结果。如果希望更快的结果,可以减小间隔。这样可以防止程序拖累计算机的其余部分。但是,如果您不介意粉丝们吹牛,并且您绝对需要知道结果准备就绪的那一刻,请忽略上述所有内容,并按原样保留代码:)