问题描述
经过大量研究,我还没有找到完全解决我的任务的答案。我正在执行 Linux 命令(其中 6 个连续执行)并且输出(stdout 和 stderr)必须保存到输出文件中,我最终成功了。
问题是一些使用 subprocess.popen() 执行的 Linux 命令陷入无限循环,然后这些命令必须在 60 秒后终止。将 subprocess.poll 与 subprocess.kill 结合使用,杀死进程并不总是成功 - 在大多数情况下,进程仍在运行,并且必须通过运行“ps”和 kill [pid] 手动终止进程,这不会使进程自动化高效。
我也尝试了 subprocess.check_output ,它有超时并停止卡住的进程,但这个方法不能使用 stdout 像 stdout = subprocess.PIPE 这将允许 proc.communicate()[0] 收集输出并将其写入文件。我尝试的另一个解决方案是使用 psutil,但我使用的是 Windows,因此它会检测 Windows 进程,我需要终止 Linux 进程。
是否有任何解决方案以某种方式将 popen 和 check_output 结合起来,并将超时作为参数?每次只有 check_output 中的超时才能真正杀死进程。我的代码如下。
+ Service [redacted] in region europe-north1
URL: https://[redacted].a.run.app
Ingress: all
Traffic:
100% LATEST (currently [redacted])
Last updated on 2021-01-19T13:48:46.172388Z by [redacted]:
Revision [redacted]
Image: eu.gcr.io/[redacted]/[redacted]:c0a2e7a6-56d5-4f6f-b241-1dd9ed96dd30
Port: 8080
Memory: 256Mi
cpu: 1000m
Service account: [redacted]-compute@developer.gserviceaccount.com
Env vars:
WEB_CONCURRENCY 2
Concurrency: 80
Max Instances: 2
Timeout: 300s
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)