gpt4 book ai didi

python - 无法腌制 redis-py 实例 (_thread.lock)

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

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

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

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)

但是,每当我尝试启动这个 worker 的一个实例时,我都会收到以下错误消息:

TypeError: can't pickle _thread.lock objects

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

最佳答案

在带有 fork 的 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()

关于python - 无法腌制 redis-py 实例 (_thread.lock),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52296240/

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