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 !!!