RT:小弟这边为了保证某 task 优先运行完成,采用了检查结果返回状态的法子:
while not result.ready():
比如下面的样例代码,任务没有 ready 就一直循环( PS:用 result.get 也会出现类似的情况):
from tasks import add
result = add.delay(4, 4) #不要直接 add(4, 4),这里需要用 celery 提供的接口 delay 进行调用
while not result.ready():
time.sleep(1)
print 'task done: {0}'.format(result.get())
结果小弟发现那个需要优先运行的任务,就一直处在 received 的状态,result.ready()的返回一直是 False。 此前以为 task 函数的原因,检查了并没有发现问题。
很急,在线求大神解答为啥会出现这种情况。 感谢!