我试图学习如何在Python中使用asyncio框架。我有以下代码,但它给出了错误:
事件循环在未来完成之前停止。
另请更新捕获代码输出的位置。
代码:
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())
答案 0 :(得分:2)
在退出go()
协程并停止循环之前,池未关闭。
使用async with aiopg.create_pool()
代替await aiopg.create_pool()
或在协程结束时明确调用pool.close()
/ await pool.await_closed()
。