python - 从 Python Popen 将 stdout 和 stderr 存储在 Redis 中

标签 python redis

我想运行一个命令并在运行时将结果存储在 Redis 中。

虽然演示的命令是ls/etc,但在现实生活中我想将它用于长时间运行的进程。

我写了一些演示代码来展示这个想法。

不幸的是,这段代码在运行时坚持一个文件号,并且不起作用,即使我模拟了一个。我怎样才能做到这一点?

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()

最佳答案

您应该将 sys.stdout 替换为自定义标准输出。
一个这样的例子: 从 unittest.mock 导入补丁 使用补丁('sys.stdout',your_stdout),补丁('sys.stderr',your_stderr): 做一点事

关于python - 从 Python Popen 将 stdout 和 stderr 存储在 Redis 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37201351/

相关文章:

python - map 函数返回的列表在使用一次后消失

go - 错误 - redigo.Scan : Cannot convert from Redis bulk string to *string

javascript - 在 node.js 中使用多个异步 redis 调用正确放置回调

python - Pandas - 比较数据框中的 2 列并返回计数

python - 如何构建我的 flask 项目并将路由重构为单独的文件

PHP exec 命令运行 python 脚本但不运行 python3

django - 如何为 Django 测试模拟 Redis

java - 我应该从 Redis Cluster slave 读取数据吗?

node.js - NodeJS Redis 监听器

python - Pandas:使用plotly作为后端时如何选择绘图元素颜色?