无法pickle redispy实例(_螺纹锁紧)

2024-10-10 18:26:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用Redis的客户端python实现(事实上的标准):https://pypi.org/project/redis/

所以我在后台定义了多个worker,每个worker在启动时都创建了一个connection实例:

class Worker(Process):
    _db = None

    def __init__(self):
        super(Worker, self).__init__()
        self._db = redis.Redis(host="1.2.3.4", port=1234, db=0)

但是,每当我尝试启动此辅助进程的实例时,都会收到以下错误消息:

^{2}$

所以我猜这个实现在某个地方使用了一个锁。解决此问题的方法是什么?在


Tags: 实例httpsorgselfprojectpypiredis客户端
1条回答
网友
1楼 · 发布于 2024-10-10 18:26:22

在使用forking的Unix-y操作系统上,您不会遇到此问题,但是对于Windows来说,一个廉价的解决方案是,将redis实例化延迟到新进程中调用run

from multiprocessing import Process
import redis

class Worker(Process):
    _db = None
    def __init__(self):
        super().__init__()
        self._db = None
    def run(self):
        self._db = redis.Redis(host='localhost', port=6379, db=0)
        # do stuff

if __name__ == '__main__':
    w = Worker()
    w.start()
    w.join()

相关问题 更多 >