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有自己的連接池: