У меня есть следующий код для установления соединения PG.
class Engine:
@property
async def engine(self):
self._engine = await asyncpg.create_pool(PG_URI)
return self._engine
@async_generator.asynccontextmanager
async def transaction(self, *args, **kwargs):
engine = self.engine
conn = await self.engine()
async with conn.acquire() as txn:
await txn.execute("EXECUTE-SOMETHING-TO CHANGE PG TIMEEOUT")
yield txn
def __call__(self):
"""Retry a transaction on an OperationalError."""
def t(f):
@wraps(f)
async def g(*args, **kwargs):
async with self.transaction(f.__name__) as txn:
return f(txn, *args, **kwargs)
return g
return t
В другом модуле произнесите model.py
engine = Engine()
@engine()
async def retry_delivery(txn):
try:
result = await txn.fetchrow("EXECUTE SOME QUERY")
if result is None:
return []
else:
return [dict(result)["id"]]
finally:
txn.close()
Когда я пытаюсь позвонить retry_delivery
Я получаю ошибку TypeError: 'coroutine' object is not iterable
. Я достиг этой точки после того, как много гуглил. Пожалуйста, предложите, где я не прав или какой-либо лучший способ реализовать это. Спасибо!