我正在尝试学习如何在 Python 中使用 asyncio 框架。我有以下代码,但它给出了错误:
event loop stopped before the future completed.
另请更新捕获代码输出的位置。
代码:
import asyncio
import aiopg
dsn = 'dbname=dvdrental user=postgres password=password host=127.0.0.1'
async def go():
pool = await aiopg.create_pool(dsn)
async with pool.acquire() as conn:
async with conn.cursor() as cur:
await cur.execute("Select * from actor")
ret = []
async for row in cur:
ret.append(row)
assert ret == [(1,)]
loop = asyncio.get_event_loop()
loop.run_until_complete(go())
最佳答案
在退出 go()
协程和循环停止之前,池没有关闭。
使用 async with aiopg.create_pool()
而不是 await aiopg.create_pool()
或显式调用 pool.close()
/await pool.await_closed()
在协程结束时。
关于python - 如何使用 PostgreSQL 在 Python 中理解和使用 asyncio?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48673117/