task - 如何使用 completed_count 跟踪 Celery 中的任务组完成情况?
问题描述
我正在尝试使用“completed_count()”来跟踪 Celery 组中剩余的任务数。
我的“客户”运行这个:
from celery import group
from proj import do
wordList=[]
with open('word.txt') as wordData:
for line in wordData:
wordList.append(line)
readAll = group(do.s(i) for i in wordList)
result = readAll.apply_async()
while not result.ready():
print(result.completed_count())
result.get()
“word.txt”只是一个每行一个单词的文件。
然后我将芹菜工人设置为运行 do 任务:
@app.task(task_acks_late = True)
def do(word):
sleep(1)
return f"I'm doing {word}"
我的代理是 pyamqp,我使用 rpc 作为后端。
我认为它会为客户端的每个循环打印越来越多的任务,但我得到的只是“0”。
解决方案
问题不在completed_count
方法上。由于 result.ready()False
在所有任务完成后仍然存在,因此您得到了零。似乎我们的后端有一个错误,githubrpc
上有一个问题。考虑将后端设置更改为,正如我所见,它工作正常amqp
推荐阅读
- python - Tkinter 将小部件放置在相对于窗口调整大小的特定位置
- sonarqube - 通过询问 sonar.java.binaries 属性从 5.6 升级到 Sonar 6.7.3 后构建失败
- javascript - 动态切换到不同的firebase项目数据库(Javascript)
- angular - Angular 5 EventSource 不发送会话 cookie
- javascript - 当用户单击浏览器中的后退按钮时,保存用户输入的最佳方法是什么?
- sonarqube - 升级到 7.1 后 Sonarqube ps 值错误
- c# - RestSharp 将正文作为文本/纯文本发送
- reactjs - 茉莉花中的Css样式单元测试
- r - 根据时间顺序子集面板数据
- sql - 如何在 oracle 中获取不同的时区日期?