【发布时间】:2019-01-29 19:07:29
【问题描述】:
我像这样从 python 运行一个子进程(不是我的脚本):
with contextlib.redirect_stdout(log_file):
# ....
processResult = subprocess.run(args,
stdout=sys.stdout,
stderr=sys.stderr
timeout=3600)
有时进程会变得疯狂(由于间歇性错误)并将大量错误转储到标准输出/日志文件中,以至于它增长到 40Gb 并填满磁盘空间。
防止这种情况的最佳方法是什么?作为一个python新手,我有两个想法:
-
将子进程通过管道连接到
head之类的东西中,如果输出超出限制,则中止它(不确定 subprocess.run 是否可以实现,或者我是否必须采用低级别的 Popen 方式) -
查找或创建一些方便的 IO 包装类 IOLimiter,它会在给定大小后引发错误(在 stdlib 中找不到类似的东西,甚至不知道在哪里寻找它)
李>
我怀疑会有一些更聪明/更清洁的方法?
【问题讨论】:
-
尝试使用stackoverflow.com/a/24505345/6529424添加日志记录
标签: python