Tasks e Eventos

Esta camada é a de execução de tarefas em background e execução de métodos em outros recursos que escutam um UseCase.

Tasks

As tasks são tarefas que podem levar um certo tempo para termina, e por isso não podemos travar a API o que nos leva a executar em background tais tarefas. As tarefas podem ser:

  • Reinicia algum serviço do linux.
  • Processamento de arquivo.
  • Aplicar regras de firewall.
from itflex.tasks import Task
from itflex_auth.entities import Consumer


def register_tasks(queue, users_uc):
    queue.register("users.users.provision", users_uc.provision)


class UsersTasks:
    def __init__(self, queue):
        self.queue = queue

    def provision(self, consumer: Consumer):
        task = Task(
            name="users.users.provision",
            payload=consumer,
            timeout=180,
            notify_all=True,
            failed_msg_id="msg_users_users_provision_error",
            msg_id="msg_users_users_provision",
            consumer_id=consumer.id,
            module="users",
            target_type="users",
            target_desc=None,
            target_id=None,
        )
        self.queue.publish(task)

Events

Os eventos também são executados em backgroud para não travar a API. Utilizamos para avisar os módulos e recursos que devem tomar alguma ação. Exemplo: Ao apagar um usuário, o UseCase de usuário publica o evento informando que o usuário foi apagado. Os outros módulos que estiverem houvindo esse evento vão receber o usuário que foi apagado, para executar algum processamento.

from itflex.events import BaseEvents
from itflex_auth.consts import (
    AUTH_EVENTS_USERS_CREATED,
    AUTH_EVENTS_USERS_DELETED,
    AUTH_EVENTS_USERS_UPDATED,
)


class UsersEvents(BaseEvents):
    def __init__(self, queue):
        self.queue = queue
        self.event_created = "users.users.created"
        self.event_updated = "users.users.updated"
        self.event_deleted = "users.users.deleted"