Compartilhamento de dados e inicializações assíncronas#

Recomendamos que com o asyncworker você não utilize variáveis globais e que utilize o estado do asyncworker.App para manter os seus singletons. Para isso, o asyncworker.App disponibiliza _hooks_ para que códigos sejam injetados ao longo ciclo de vida da aplicação, tornando possível a manutenção, manipulação e compartilhamento de estado pelos handlers.

Armazenando na App#

Para armazenar estados globais da aplicação, podemos utilizar a instância de asyncworker.App, que age como um dicionário.

app['processed_messages'] = 0

Então você poderá utilizá-los nos seus handlers

@app.route(routes=["words_to_index"], type=RouteTypes.AMQP_RABBITMQ)
async def drain_handler(messages):
    app['processed_messages'] += 1

Obs.: Vale lembrar que esse dicionário é compartilhado ao longo de toda app e utilizado inclusive pelo próprio asyncworker, então uma boa prática é escolher nomes únicos para evitar conflitos.