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"