Jobs em background, scheduler e realtime

Jobs em background retiram do fluxo síncrono tarefas custosas. Scheduler automatiza execuções recorrentes. Realtime conecta o resultado disso ao front-end.

neo.enqueue

import neo

def long_running_job(member_name):
    neo.logger().info(f"Processando membro {member_name}")

def trigger_job(member_name):
    neo.enqueue(
        long_running_job,
        queue="short",
        member_name=member_name,
        enqueue_after_commit=True
    )

Filas padrão

Fila
Perfil

short

Execuções rápidas

default

Carga intermediária

long

Processos demorados

Quando usar background job

  • integração externa lenta;

  • geração em lote;

  • processamento de arquivo;

  • envio de e-mail em massa;

  • cálculo pesado;

  • sincronizações.

enqueue_after_commit

Use quando o job depende do estado recém-gravado do banco.

Scheduler

Realtime e UI

Realtime é especialmente útil para:

  • progresso de importação;

  • conclusão de processamento;

  • atualização de dashboard;

  • feedback assíncrono ao usuário.

Exemplo conceitual

Boas práticas de UX

  • informar imediatamente que a ação foi aceita;

  • exibir progresso quando possível;

  • evitar deixar o usuário sem feedback;

  • permitir refresh ou consulta de status.

Logs e rastreabilidade

Todo job relevante deve registrar:

  • início e fim;

  • parâmetros importantes;

  • erro estruturado;

  • documento afetado;

  • reprocessamento quando houver.

Atualizado