Verwenden einer einzelnen Redis -Verbindung (Aioredis)
Posted: 07 Feb 2025, 08:05
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. nennen, ist die Verbindung geschlossen ().
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 !!!
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
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 !!!