class RedisClient(object):
def __init__(self):
pool = redis.ConnectionPool(host='127.0.0.1', port=6379)
self.client = redis.StrictRedis(connection_pool=pool)
Schreiben Sie einen Redis-Client mit einem Verbindungspool gemäß der Dokumentation und generieren Sie dann eine Instanz für die globale Verwendung.
Es wurde getestet, dass es normal ist, wenn eine Instanz in mehreren Threads geteilt wird.
Aber bei mehreren Prozessen ist der Test fehlgeschlagen
class ProcessRdeisTest(Process):
def __init__(self,client):
self._client = client
So geschrieben: Beim Ausführen von Start wird ein Fehler gemeldet und die Serialisierung kann nicht durchgeführt werden.
geändert zu:
class ProcessRdeisTest(Process):
def __init__(self):
pass
def run(self):
self._client = RedisClient()
while Ture:
dosomething()
Es funktioniert so, aber ist diese Verbindungsmethode richtig? Gibt es einen besseren Weg, dies zu erreichen?
Im Hauptthread direkt
process1 = ProcessRdeisTest('p1')
process1.start()
Auf diese Weise aufrufen
楼主,python redis有自己的连接池: