I am writing a REST API using aiohttp
.
Some of the coroutines need to call the database using the aiomysql
library. The documentation for aiomysql
has the following example:
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())
My question is concerning the definition of the global variable loop
:
loop = asyncio.get_event_loop()
Do I really need to keep loop
as a global variable somewhere, or can I just call asyncio.get_event_loop()
when I need it?
For example, it the code example above, I could get the event loop when I am connecting to the database:
conn = await aiomysql.connect(host='127.0.0.1', port=3306,
user='root', password='', db='mysql',
loop=asyncio.get_event_loop())
Is there a non-trivial runtime cost to calling asyncio.get_event_loop()
or something else that I am missing?