Repolode
piercefreeman

piercefreeman/waymark

Biblioteca Python para workflows e ações duráveis em segundo plano, que resistem a reinicializações e falhas usando apenas o Postgres como infraestrutura.

Estrelas
87
Forks
5
Issues abertas
92
Último commit
há 19 horas

O que é?

Waymark é uma biblioteca para criar tarefas em segundo plano que continuam em execução mesmo após reinicializações do servidor, falhas em tarefas e durante jobs de longa duração. Sua única dependência de infraestrutura é o Postgres, e Python é a primeira linguagem com suporte. Você escreve funções assíncronas comuns em Python como ações, executadas de forma distribuída em nós workers, e um workflow que as orquestra usando estruturas de controle comuns, como loops, condicionais e ramificações paralelas.

Os workflows são compilados uma única vez a partir do código Python do método run() para uma representação intermediária e, em seguida, executados por um runtime em Rust que salva snapshots do estado no Postgres à medida que avança. Um workflow que falha retoma do ponto em que parou, e o código original do workflow não é executado novamente durante a recuperação. Por causa desse design, os workflows precisam usar padrões compatíveis; chamadas não determinísticas, como time ou uuid, devem ser encapsuladas em ações explícitas.

O projeto inclui uma webapp integrada, servida pelo processo waymark-executor, que exibe instâncias de workflows, suas linhas do tempo de chamadas e a carga dos nós. Também oferece políticas de nova tentativa e timeouts por chamada, sleep durável e agendamentos por cron ou intervalo. O projeto ainda está na versão pré-1.0, e os mantenedores recomendam não usá-lo em produção até que a compatibilidade com versões anteriores seja garantida.

Recursos principais

  • 01Workflows duráveis que retomam do último estado após falhas ou reinicializações
  • 02Ações executadas em workers distribuídos, com políticas de nova tentativa e timeouts por chamada
  • 03Estruturas de controle comuns do Python: loops, condicionais e asyncio.gather para execução paralela
  • 04Sleep durável que resiste a reinicializações, de segundos a dias
  • 05Agendamentos por cron e intervalo sem infraestrutura extra
  • 06Webapp integrada para inspecionar instâncias de workflows e a carga dos nós

Casos de uso

  • Enviar lotes de e-mails ou chamar APIs de terceiros com novas tentativas e distribuição paralela
  • Executar jobs de banco de dados que precisam ser concluídos com confiabilidade, mesmo durante deploys ou falhas
  • Agendar sincronizações periódicas de dados sem um broker de tarefas separado
  • Orquestrar processos assíncronos de várias etapas em uma aplicação Python com Postgres

Início rápido

  1. 1

    Instale o pacote com uv

    uv add waymark
  2. 2

    Inicie o node conectado ao seu banco de dados Postgres com a webapp habilitada

    export WAYMARK_DATABASE_URL=postgresql://postgres:postgres@localhost:5432/waymark export WAYMARK_HTTP_ENABLED=true uv run waymark-executor

Antes de usar

  • O README recomenda não usar o projeto em produção ainda, pois a especificação muda rapidamente e a compatibilidade com versões anteriores não é garantida antes da versão 1.0.0.
  • Atualmente, Python é a única linguagem compatível.
  • Não é indicado para tarefas sensíveis à latência que precisem de processamento em menos de 100 ms, nem para coordenar mais de cerca de 10 mil ações simultâneas.

Tópicos

Perguntas frequentes

O que é waymark?
Biblioteca Python para workflows e ações duráveis em segundo plano, que resistem a reinicializações e falhas usando apenas o Postgres como infraestrutura. Waymark é uma biblioteca para criar tarefas em segundo plano que continuam em execução mesmo após reinicializações do servidor, falhas em tarefas e durante jobs de longa duração. Sua única dependência de infraestrutura é o Postgres, e Python é a primeira linguagem com suporte. Você escreve funções assíncronas comuns em Python como ações, executadas de forma distribuída em nós workers, e um workflow que as orquestra usando estruturas de controle comuns, como loops, condicionais e ramificações paralelas.
waymark é gratuito? Qual é a licença?
waymark é open source sob a licença MIT. Confira os termos da licença antes de usá-lo em produtos comerciais.
waymark ainda é mantido?
Manutenção ativa. O último commit de waymark foi em 6 de nov. de 2026.
Para que posso usar waymark?
Enviar lotes de e-mails ou chamar APIs de terceiros com novas tentativas e distribuição paralela Executar jobs de banco de dados que precisam ser concluídos com confiabilidade, mesmo durante deploys ou falhas Agendar sincronizações periódicas de dados sem um broker de tarefas separado Orquestrar processos assíncronos de várias etapas em uma aplicação Python com Postgres
Como instalar waymark?
Instale o pacote com uv: uv add waymark Inicie o node conectado ao seu banco de dados Postgres com a webapp habilitada: export WAYMARK_DATABASE_URL=postgresql://postgres:postgres@localhost:5432/waymark export WAYMARK_HTTP_ENABLED=true uv run waymark-executor
Onde consigo waymark?
O código-fonte e as instruções de instalação estão no GitHub: https://github.com/piercefreeman/waymark

Resumo gerado por IA a partir do README do projeto. As estatísticas do GitHub são atualizadas diariamente.

Projetos relacionados