gpt4 book ai didi

python - 从 Python 日志记录/stdout 流式传输到 redis 连接

转载 作者:IT王子 更新时间:2023-10-29 06:10:38 24 4
gpt4 key购买 nike

如何将 Python stdout(或日志记录)流式传输到 redis 连接?

有一个长时间运行的作业,我需要实时捕获日志。等到作业完成后再获取日志是不可行的,以防万一失败,需要记录发生的事情。

我已经设法将日志输出捕获到 StringIO 缓冲区中的标准输出,当长时间运行的作业完成时可以读取该缓冲区。

我想不通的是如何让该缓冲区在作业仍在运行时与 redis 客户端实时交互。

最佳答案

我想通了:

from io import StringIO


class RedisHandler(StringIO):

def __init__(self, key, redis_client):
"""
Create a new StringIO interface for the given key and redis_client.
"""

StringIO.__init__(self)
self.key = key
self.redis_client = redis_client

def write(self, record):
"""
Publish record to redis logging list
"""

self.redis_client.lpush(self.key, record)

在主脚本中,我将 stdout + stderr 重定向到 RedisHandler 实例。 Redis 充当 StringIO 的端点,并将日志输出中的每一行添加到列表中。

关于python - 从 Python 日志记录/stdout 流式传输到 redis 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53366214/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com