You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用os.popen()监控Python脚本输出时运行一段时间后失效的问题求助

使用os.popen()监控Python脚本输出时运行一段时间后失效的问题求助

大家好,我遇到了一个困扰我挺久的问题,希望能得到各位大佬的帮助。

我先写了一个Python脚本script1.py,它的核心逻辑很简单,就是持续循环检查是否有任务,若存在则打印任务流程相关信息,代码大致如下:

while True:
    if hasTask:
        print('task flow info print')

之后我又编写了监控脚本monitor.py,打算通过os.popen()来捕获script1.py的控制台输出,当读取到特定内容时,将消息发送到Redis频道中。具体代码如下:

import os
import re
import redis
import json

redis_key = "command"
cmd = "python script1.py"
pool = redis.ConnectionPool(host="127.0.0.1")
r = redis.Redis(connection_pool=pool)

command_info = {}  # 补充原代码中未显式定义的字典

with os.popen(cmd,"r") as stream:
    while True:
        buf = stream.readline().strip()
        if re.match("target",buf) is not None:
            message = stream.readline().strip()
            command_info["command"] = message
            r.publish(redis_key, json.dumps(command_info))

一开始这套组合运行得很正常,monitor.py能准确读取script1.py的输出,也能成功往Redis频道发送消息。但运行一段时间后,整个流程就突然失效了,再也没有消息发送到Redis里了。

我想请教各位:这种情况可能是什么原因导致的?会不会是os.popen()返回的文件对象缓存堆积过大?或者有没有什么可行的解决办法?麻烦大家帮忙分析一下,非常感谢!

备注:内容来源于stack exchange,提问作者yuan yao

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.23 07:58:06