Aller au contenu principal

Temporal ⇄ Pulse

Intermédiaire ⏱ 15 min temporal · python · activity durable

Temporal possède l'orchestration durable ; Pulse est le step de streaming temps réel qu'il appelle. Exemple du repo : examples/temporal-pulse-bridge/.

Pourquoi une Activity — la seule contrainte de design qui compte​

Les workflows Temporal sont déterministes et replay-safe, donc ils ne peuvent pas faire d'I/O directement — chaque appel externe vit dans une Activity. Pulse est donc un step à l'intérieur d'une Activity, et Temporal l'entoure de retries / timeouts / sémantique exactly-once durables :

OrderWorkflow (durable) → execute_activity(score_order, retry ×3, timeout 15s) → decide → escalate | auto-approve

L'Activity fait les deux mêmes appels que tous les autres bridges :

POST /api/pulse/x/order-scoring/in
GET /api/pulse/events/order-scoring.score.out

Lancez-le​

pulse server start --dev
mkdir app && cp pulse.yaml app/ && (cd app && pulse deploy .) # monte order-scoring
pip install temporalio requests
python run.py

run.py démarre un serveur Temporal de dev local in-process (WorkflowEnvironment.start_local()), lance un worker hébergeant OrderWorkflow + l'Activity score_order, et exécute le workflow :

amount= 2500 -> high_value=True decision=escalate
amount= 300 -> high_value=False decision=auto-approve

Ce qui est validé — dit précisément​

  • L'appel Pulse de l'Activity est validé en live contre un serveur --dev (le même contrat POST-ingress + lecture de topic que les bridges n8n/LangGraph).
  • Le câblage Temporal est réel — @workflow.defn / @activity.defn sur temporalio 1.30.
  • Le run complet du workflow in-process a besoin du binaire du serveur de dev Temporal, que la sandbox CI du repo ne peut pas télécharger — lancez python run.py sur votre machine pour voir la boucle durable complète.

Ce que chaque côté apporte​

PréoccupationPropriétaire
État durable, retries, timeouts, tâches humainesTemporal
Fenêtres par clé, joins, dedup, stages LLM/MCP sur le fluxPulse
La coutureune Activity avec deux appels HTTP

C'est la division du travail la plus propre de tous les bridges : Temporal ne voit jamais le déluge d'événements, Pulse ne réimplémente jamais l'orchestration durable.

Ensuite​