class RedisClient(object):
def __init__(self):
pool = redis.ConnectionPool(host='127.0.0.1', port=6379)
self.client = redis.StrictRedis(connection_pool=pool)
根据文档写了一个带连接池的redis client,然后生成一个实例全局使用。
将一个实例,在多线程中共用测试过正常。
但是多进程情况,测试失败
class ProcessRdeisTest(Process):
def __init__(self,client):
self._client = client
这样写,在执行start时,会报错,无法序列化之类。
改为:
class ProcessRdeisTest(Process):
def __init__(self):
pass
def run(self):
self._client = RedisClient()
while Ture:
dosomething()
这样倒是能运行起来,不过这种连接方式正确吗?是否有更好的办法实现?
在主线程中 直接
process1 = ProcessRdeisTest('p1')
process1.start()
这种方式调用
楼主,python redis有自己的连接池: