我想知道是否可以在def get_all_allowed_systems
函数中调用异步函数create_app
,以便我可以访问由get_all_allowed_systems调用填充的ALLOWED_SYSTEMS
的数据库条目。我有一个限制,我不能将create_app
作为异步函数。
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)
答案 0 :(得分:1)
在Python 3.7+中,您可以只使用asyncio.run(coroutine())
在早期版本中,您必须获取事件循环并从那里运行:
loop = asyncio.get_event_loop()
asyncio.ensure_future(coroutine())
loop.run_forever()
loop.close()