如何使用PostgreSQL理解和使用Python中的asyncio?

时间:2018-02-07 20:58:28

标签: python postgresql python-asyncio

我试图学习如何在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())

1 个答案:

答案 0 :(得分:2)

在退出go()协程并停止循环之前,池未关闭。

使用async with aiopg.create_pool()代替await aiopg.create_pool()或在协程结束时明确调用pool.close() / await pool.await_closed()