如何解决结合 subprocess.Popen 和 timeout 并将输出写入文件
经过大量研究,我还没有找到完全解决我的任务的答案。我正在执行 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 举报,一经查实,本站将立刻删除。