在运行aiohttp循环之前创建数据库连接

时间:2019-09-21 20:39:08

标签: python-asyncio aiohttp

在aiohttp中运行web.run_app之前创建一些连接(到DB,AMQP等)的连接没错吗? 一些例子:

async def init_app():
    app = web.Application()

    app['db'] = await create_db_connection()
    app['amqp'] = await create_amqp_connection()

    return app

if __name__ == '__main__':
    app = asyncio.get_event_loop().run_until_complete(init_app())
    web.run_app(app)

它可以工作,但是我不确定是否正确。 我知道app.startup,但是我想在启动主应用程序之前处理所有连接的错误。

1 个答案:

答案 0 :(得分:1)

该代码是正确的,除非您不关心在服务器退出之前关闭资源。

大多数人都不会,没关系。

否则,应使用app.cleanup信号。