Hooks de startup e shudtdown
Contents
Hooks de startup e shudtdown#
O asyncworker permite que registre eventos para rodarem antes/depois de sua app ser inicializada.
@app.run_on_startup#
Um cenário bem comum em workers é, por exemplo, a necessidade de se manter e
compartilhar uma conexão persistente com um banco de dados. Em clientes
assíncronos, é comum a necessidade da inicialização de conexões que necessitam
de um loop de eventos rodando. Para esses cenários, usamos o evento de
on_startup
da aplicação:
import aioredis
from asyncworker import App
# ...
@app.run_on_startup
async def init_redis(app):
app['redis'] = await aioredis.create_pool('redis://localhost')
app.run()
@app.run_on_shutdown#
Assim como o evento de on_startup
sinaliza a inicialização do ciclo de vida
da app, o evento on_shutdown
representa o fim. Um caso de uso comum, é fazer
o processo de finalização de conexões abertas. Como no exemplo anterior
abrimos uma conexão com o Redis, utilizando a biblioteca
aioredis, precisamos fechar as conexões
criadas:
@app.run_on_shutdown
async def init_redis(app):
app['redis'].close()
await app['redis'].wait_closed()