Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Закрытие и init асинхронных драйверов ДБ
- def init_app(loop):
- ....
- app.on_startup.append(init_db)
- app.on_cleanup.append(close_db)
- ...
- async def init_db(app):
- """On startup initial"""
- async def init_mysql(database_conf, db_name):
- try:
- with async_timeout.timeout(2):
- mysql_db = await aiomysql.create_pool(**database_conf, loop=app.loop, autocommit=True)
- app[db_name] = mysql_db
- log.server_logger.info('Successful created pool for %s' % db_name)
- except Exception as e:
- log.server_logger.debug(e)
- async def init_postgres(database_conf, db_name):
- # import aiopg
- try:
- with async_timeout.timeout(2):
- pg_db = await aiopg.create_pool(**database_conf)
- app[db_name] = pg_db
- log.server_logger.info('Successful created pool for %s.\n'
- 'Pool object - %s' % (db_name, pg_db))
- except Exception as e:
- log.server_logger.debug(e)
- await init_mysql(app['asterisk_cdr_conf'], db_name='asterisk_cdr')
- await init_mysql(app['asterisk_users_conf'], db_name='asterisk_users')
- async def close_db(app):
- """On app shutdown"""
- async def close(database, db_name):
- if database:
- try:
- database.close()
- except (AttributeError, KeyError) as e:
- log.server_logger.info('The %s database was not initialized' % db_name)
- print('The %s database was not initialized' % db_name)
- return web.HTTPServiceUnavailable(text='The %s database was not initialized' % db_name)
- await database.wait_closed()
- log.server_logger.info('Database %s successfully closed' % db_name)
- print('Database %s successfully closed' % db_name)
- else:
- log.server_logger.debug('Empty %s database object' % db_name)
- print('Empty %s database object' % db_name)
- await close(app.get('asterisk_cdr', None), db_name='asterisk_cdr')
- await close(app.get('asterisk_users', None), db_name='asterisk_users')
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement