【问题标题】:Showing task progress from a Django management command显示来自 Django 管理命令的任务进度
【发布时间】:2016-05-07 16:03:17
【问题描述】:

我有一些 Django 管理命令,它们调用其他类中的方法来从 API 获取数据。这些任务可能需要很长时间才能完成,我想在控制台中以简洁的方式显示进度。

我可以使用print() 输出单行,例如“Fetched 22 of 3000”,它会覆盖自身,使用如下内容:

print('Fetched %d of %d' % (n, total) + ' '*30, end='\r')

但是使用print() 似乎有点讨厌,并且在运行测试时它会输出到控制台。所以使用logging 似乎更好,但我看不到使用它在控制台中显示单个、不断更新的“进度”行的方法。

有什么好的方法吗?

【问题讨论】:

  • 如果您使用self.stdout.writeself.stderr.write 而不是print,您可以在测试中将os.devnull 传递给call_command 用于stdout/stderr kwargs,它不会输出到控制台。

标签: python django django-logging


【解决方案1】:

也许tqdm 是一个对你有用的python 包。

【讨论】:

  • 我以前没见过,你可能是对的。不过有一件事 - 我不确定如何在运行单元测试时禁用其控制台输出。有什么想法吗?
  • @PhilGyford 你可以设置disable=True 参数。
猜你喜欢
  • 1970-01-01
  • 2019-06-08
  • 2016-03-22
  • 1970-01-01
  • 2023-03-19
  • 1970-01-01
  • 1970-01-01
  • 2012-06-21
  • 2011-07-23
相关资源
最近更新 更多