有我的RPC方法兩個操作:如何使用asyncio和postgres在python中進行交易?
async def my_rpc(self, data):
async with self.Engine() as conn:
await conn.execute("SELECT ... FROM MyTable");
... # It seems the table MyTable can be changed by another RPC
await conn.execute("UPDATA MyTable ...");
另一個RPC方法可以操作前「my_rpc」將完成(SQL查詢兩個等待着之間)改變DB。如何避免這種情況?
self.Engine的代碼(帶發動機調用aiopg.sa.create_engine
):
class ConnectionContextManager(object):
def __init__(self, engine):
self.conn = None
self.engine = engine
async def __aenter__(self):
if self.engine:
self.conn = await self.engine.acquire()
return self.conn
async def __aexit__(self, exc_type, exc, tb):
try:
self.engine.release(self.conn)
self.conn.close()
finally:
self.conn = None
self.engine = None
你可以顯示self.Engine的代碼嗎? – jsbueno
@jsbueno我添加了代碼 – Broly