Verwenden einer einzelnen Redis -Verbindung (Aioredis)Python

Python-Programme
Anonymous
 Verwenden einer einzelnen Redis -Verbindung (Aioredis)

Post by Anonymous »

Meine Bewerbung sendet jede Sekunde Hunderte, wenn nicht Tausende von Nachrichten über Redis, sodass wir die Verbindung öffnen, wenn die App startet, und diese Verbindung für jede Transaktion verwenden. Ich habe Probleme, diese Verbindung offen zu halten.

Code: Select all

class RedisSingleDatabase(AsyncGetSetDatabase):

async def redis(self):
if not self._redis:
self._redis = await aioredis.create_redis(('redis', REDIS_PORT))
return self._redis

def __init__(self):
self._redis = None

async def get(self, key):
r = await self.redis()
# r = await aioredis.create_redis(('redis', REDIS_PORT))
print(f'CONNECTION IS {"CLOSED" if r.closed else "OPEN"}!')
data = await r.get(key, encoding='utf-8')
if data is not None:
return json.loads(data)
< /code>
Dies funktioniert nicht. Wenn wir R.Get 
nennen, ist die Verbindung geschlossen (

Code: Select all

ConnectionClosedError
).
Wenn ich die zweite Zeile der GET -Methode überfasse und in der Methode lokal eine Verbindung zur Datenbank herstellen, funktioniert es. Aber dann verwenden wir nicht mehr dieselbe Verbindung. Dies ist eine Flask -App, und in meiner Methode create_app würde ich eine Verbindung zu der Datenbank herstellen und meine Umbauteatabase mit dieser Verbindung konstruieren. Neben der Frage, ob mein aktuelles Problem das gleiche wäre, kann ich diesen Ansatz anscheinend nicht erreichen, da wir auf die Verbindung warten müssen, die ich in meinem Root-Level create_app Was kann nicht asynchron sein! (Es sei denn, mir fehlt mir etwas). Es kann nicht aus einer Laufereignisschleife aufgerufen werden.
Bitte helfen Sie !!!

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post