Discuss / Python / aiomysql报RuntimeError: Event loop is closed错的原因

aiomysql报RuntimeError: Event loop is closed错的原因

Topic source

小样还逃

#1 Created at ... [Delete] [Delete and Lock User]

采用廖老师的测试代码时总是出现RuntimeError: Event loop is closed这样的错误,看了很多评论发现是因为orm.py中只是打开了连接池却没有关闭的原因。所以,在create_pool后应该有相应的close_pool代码

这是我的测试代码,没有报错: test.py

import asyncio
import ormfrom models import User, Blog, Comment
async def test(loop):
    await orm.create_pool(loop=loop, user='www-data', password='www-data',db='awesome')
    u = User(name='Test', email='test@example.com', passwd='1234567890', image='about:blank')

    await u.save()
    await orm.close_pool()

loop = asyncio.get_event_loop()
loop.run_until_complete(test(loop))
loop.close()

orm.py中添加了:

async def close_pool():
    '''异步关闭连接池'''
    logging.info('close database connection pool...')
    global __pool
    __pool.close()
    await __pool.wait_closed()

  • 1

Reply