有我的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