ost*_*ach 6 python python-asyncio aiohttp aio-mysql
我正在使用aiohttp.
一些协程需要使用库来调用aiomysql数据库。的文档aiomysql有以下示例:
import asyncio
import aiomysql
loop = asyncio.get_event_loop()
async def test_example():
conn = await aiomysql.connect(host='127.0.0.1', port=3306,
user='root', password='', db='mysql',
loop=loop)
cur = await conn.cursor()
await cur.execute("SELECT Host,User FROM user")
print(cur.description)
r = await cur.fetchall()
print(r)
await cur.close()
conn.close()
loop.run_until_complete(test_example())
Run Code Online (Sandbox Code Playgroud)
我的问题是关于全局变量的定义loop:
loop = asyncio.get_event_loop()
Run Code Online (Sandbox Code Playgroud)
我真的需要将其loop作为全局变量保存在某个地方,还是可以asyncio.get_event_loop()在需要时调用它?
例如,在上面的代码示例中,当我连接到数据库时,我可以获得事件循环:
conn = await aiomysql.connect(host='127.0.0.1', port=3306,
user='root', password='', db='mysql',
loop=asyncio.get_event_loop())
Run Code Online (Sandbox Code Playgroud)
调用是否会产生不小的运行时成本asyncio.get_event_loop()或我遗漏的其他内容?
loop争论应该消失。
aiomysql 应该更新为不接受循环。
您现在可以跳过loop=...代码,因为参数aiomysql.connect()具有默认值。loop=None
一般来说,asyncio.get_event_loop()会被弃用;asyncio.get_running_loop()建议在需要时从异步代码中使用。从 Python 3.8 开始,不推荐将显式循环传递给 asyncio API。
| 归档时间: |
|
| 查看次数: |
995 次 |
| 最近记录: |