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?