Repolode
piercefreeman

piercefreeman/waymark

Biblioteca de Python para flujos de trabajo en segundo plano duraderos y acciones que sobreviven a reinicios y fallos, con Postgres como única infraestructura.

Estrellas
87
Forks
5
Issues abiertos
92
Último commit
hace 15 horas

¿Qué es?

Waymark es una biblioteca para crear tareas en segundo plano que siguen ejecutándose aunque se reinicie el servidor, fallen las tareas o los trabajos duren mucho tiempo. Su única dependencia de infraestructura es Postgres, y Python es el primer lenguaje compatible. Se definen acciones como funciones normales de Python asíncrono, que se ejecutan de forma distribuida en nodos worker, y un flujo de trabajo que las coordina mediante estructuras de control habituales, como bucles, condicionales y ramas paralelas.

Los flujos de trabajo se compilan una sola vez a partir del código Python del método run() y se convierten en una representación intermedia; después, un runtime de Rust los ejecuta y guarda instantáneas de su estado en Postgres a medida que avanzan. Si un flujo de trabajo falla, se reanuda donde se quedó, sin volver a ejecutar el código original durante la recuperación. Por este diseño, los flujos de trabajo deben seguir patrones compatibles; las llamadas no deterministas, como time o uuid, deben envolverse en acciones explícitas.

El proyecto incluye una aplicación web integrada, servida por el proceso waymark-executor, que muestra las instancias de flujos de trabajo, sus cronologías de llamadas y la carga de los nodos. También admite políticas de reintento y tiempos de espera por llamada, pausas duraderas y programaciones cron o por intervalos. El proyecto aún no ha llegado a la versión 1.0 y sus mantenedores desaconsejan usarlo en producción hasta garantizar la compatibilidad con versiones anteriores.

Funciones clave

  • 01Flujos de trabajo duraderos que se reanudan desde su último estado tras fallos o reinicios
  • 02Acciones ejecutadas en workers distribuidos, con políticas de reintento y tiempos de espera por llamada
  • 03Estructuras de control habituales de Python: bucles, condicionales y asyncio.gather para ejecutar tareas en paralelo
  • 04Pausas duraderas que sobreviven a los reinicios, desde segundos hasta días
  • 05Programaciones cron y por intervalos sin infraestructura adicional
  • 06Aplicación web integrada para inspeccionar instancias de flujos de trabajo y la carga de los nodos

Casos de uso

  • Enviar lotes de correos o llamar a APIs de terceros con reintentos y ejecución en paralelo
  • Ejecutar trabajos de base de datos que deben completarse de forma fiable a pesar de los despliegues o fallos
  • Programar sincronizaciones periódicas de datos sin un broker de tareas independiente
  • Coordinar procesos asíncronos de varios pasos en una aplicación Python respaldada por Postgres

Inicio rápido

  1. 1

    Instala el paquete con uv

    uv add waymark
  2. 2

    Inicia el node conectado a tu base de datos Postgres con la webapp habilitada

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

Antes de usarlo

  • El README indica que todavía no debe usarse en producción, ya que la especificación cambia rápidamente y no se garantiza la compatibilidad con versiones anteriores antes de la 1.0.0.
  • Por ahora, Python es el único lenguaje compatible.
  • No es adecuado para trabajos sensibles a la latencia que necesiten procesarse en menos de 100 ms ni para coordinar más de unos 10 000 acciones simultáneas.

Temas

Preguntas frecuentes

¿Qué es waymark?
Biblioteca de Python para flujos de trabajo en segundo plano duraderos y acciones que sobreviven a reinicios y fallos, con Postgres como única infraestructura. Waymark es una biblioteca para crear tareas en segundo plano que siguen ejecutándose aunque se reinicie el servidor, fallen las tareas o los trabajos duren mucho tiempo. Su única dependencia de infraestructura es Postgres, y Python es el primer lenguaje compatible. Se definen acciones como funciones normales de Python asíncrono, que se ejecutan de forma distribuida en nodos worker, y un flujo de trabajo que las coordina mediante estructuras de control habituales, como bucles, condicionales y ramas paralelas.
¿waymark es gratuito? ¿Qué licencia tiene?
waymark es open source bajo la licencia MIT. Revisa los términos de la licencia antes de usarlo en productos comerciales.
¿waymark sigue mantenido?
Mantenimiento activo. El último commit de waymark fue el 6 nov 2026.
¿Para qué puedo usar waymark?
Enviar lotes de correos o llamar a APIs de terceros con reintentos y ejecución en paralelo Ejecutar trabajos de base de datos que deben completarse de forma fiable a pesar de los despliegues o fallos Programar sincronizaciones periódicas de datos sin un broker de tareas independiente Coordinar procesos asíncronos de varios pasos en una aplicación Python respaldada por Postgres
¿Cómo se instala waymark?
Instala el paquete con uv: uv add waymark Inicia el node conectado a tu base de datos Postgres con la webapp habilitada: export WAYMARK_DATABASE_URL=postgresql://postgres:postgres@localhost:5432/waymark export WAYMARK_HTTP_ENABLED=true uv run waymark-executor
¿Dónde consigo waymark?
El código fuente y las instrucciones de instalación están en GitHub: https://github.com/piercefreeman/waymark

Resumen generado por IA a partir del README del proyecto. Las estadísticas de GitHub se actualizan a diario.

Proyectos relacionados