问题描述
我目前正在使用 Django 和 Celery 构建后端系统。在我当前的设置中,我有一个每 15 分钟运行一次的周期性任务。这一周期性任务确实使用 Group 创建了多个子任务。我想要做的是跟踪整个任务的时间,包括要运行的所有子任务。我确实尝试过使用 get() 但是任务中不允许使用 get() 。那么还有哪些其他选项可以用来跟踪执行时间呢?系统没有其他功能,只有一堆定期和正常的任务,也没有 UI 代码或视图中的任何内容。我想等待所有子任务完成,然后显示总时间。
下面是我的任务代码
@shared_task()
def test_process(name="task1"):
start_time = datetime.datetime.Now()
get_list = GetList()
rlist = get_list.run()
rlist = dict(itertools.islice(rlist.items(),2))
task_group= group([get_test_data.s(r) for r in rlist])
result = task_group.apply_async()
while not result.ready():
print(result.completed_count())
end_time = datetime.datetime.Now()
print('Duration: {}'.format(end_time - start_time))
此代码无法正确显示时间,因为该组创建了多个异步执行的子任务。跟踪时间的正确方法是什么???我使用的是最新版本的 Celery 5.1.1 和 Django。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)