Issue
I would like to know if it's possible to call an async function def get_all_allowed_systems
in create_app
function so that I have access to the database entries of ALLOWED_SYSTEMS
populated by get_all_allowed_systems call. I have a limitation that I can't make create_app
as async function.
async def get_all_allowed_systems(app):
global ALLOWED_SYSTEMS
operation = prepare_exec(app.config.get_all_systems_procedure)
ALLOWED_SYSTEMS = (await app['database'].execute(operation)).all()
def create_app():
app = DvmtApp(config=Config)
app['database'] = AioDatabase(**app.config.dict('db_'))
app['orassist_database'] = AioDatabase(app.config.orassistdb_url)
get_all_allowed_systems(app)
print(ALLOWED_SYSTEMS)
Solution
In Python 3.7+ you can just use asyncio.run(coroutine())
In earlier versions you have to get the event loop and run from there:
loop = asyncio.get_event_loop()
asyncio.ensure_future(coroutine())
loop.run_forever()
loop.close()
Answered By - Alex
0 comments:
Post a Comment
Note: Only a member of this blog may post a comment.