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