我想运行一个命令,并在运行时将结果存储在Redis中。在
虽然演示的命令是ls/etc,但在现实生活中,我希望将此命令用于长时间运行的进程。在
我写了一些演示代码来展示这个想法。在
不幸的是,这段代码在运行时坚持使用一个fileno,并且不起作用,即使我模拟了一个文件。我怎样才能做到这一点?在
import subprocess
import redis
class RedisFile:
def __init__(self, key):
self.key = key
self.redis = redis.StrictRedis()
print("inited RedisFile with key:", key)
def write(self, value):
self.redis.append(self.key, value)
def main():
out = RedisFile("out")
error = RedisFile("error")
proc = subprocess.Popen(["ls", "/etc"],
stdout=out,
stderr=error,
bufsize=0
)
main()
你应该更换系统标准输出使用自定义标准输出。
一个这样的例子:
from unittest.mock import patch with patch('sys.stdout', your_stdout),patch('sys.stderr', your_stderr): do_something
相关问题 更多 >
编程相关推荐