Réinitialiser les workflows

Réinitialisez une exécution de workflow pour la redémarrer depuis un point précis dans son historique d'événements.

Quand réinitialiser

Quand réinitialiser

La réinitialisation est utile quand un workflow reste bloqué — par exemple à cause d'une erreur de non-déterminisme après une modification du code — ou quand il ne peut pas se terminer en raison d'un bug qui a depuis été corrigé.

Avertissement

La réinitialisation ne doit être utilisée qu'après avoir corrigé le problème sous-jacent. Toute progression réalisée après le point de réinitialisation sera perdue.

Fonctionnement

Fonctionnement

Lorsque vous réinitialisez un workflow :

  1. L'exécution en cours est terminée
  2. Une nouvelle exécution est créée sous le même ID d'exécution
  3. Tous les événements jusqu'au point de réinitialisation sont copiés dans la nouvelle exécution
  4. Le workflow rejoue depuis le point de réinitialisation en utilisant la dernière version de votre code

Cela signifie que toute correction de bug que vous avez déployée prendra effet lorsque le workflow reprendra.

Usage

Usage

from mistralai.client import Mistral

client = Mistral(api_key="your_api_key")

client.workflows.executions.reset_workflow(
    execution_id="your-execution-id",
    event_id=42,  # Must be a WORKFLOW_TASK_COMPLETED event
    reason="Bug fixed in activity logic",
    exclude_signals=True,  # Optional: skip replaying signals after this point
    exclude_updates=True   # Optional: skip replaying updates after this point
)
Paramètres

Paramètres

ParamètreTypeObligatoireDescription
execution_idstrOuiL'exécution à réinitialiser
event_idintOuiID de l'événement vers lequel réinitialiser (doit être un événement WORKFLOW_TASK_COMPLETED)
reasonstrOuiRaison de la réinitialisation (enregistrée dans l'historique d'événements)
exclude_signalsboolNonIgnorer la relecture des signaux reçus après le point de réinitialisation
exclude_updatesboolNonIgnorer la relecture des mises à jour reçues après le point de réinitialisation
Trouver le point de réinitialisation

Trouver le point de réinitialisation

Utilisez l'API des événements de trace pour trouver des points de réinitialisation valides :

events = client.workflows.executions.get_workflow_execution_trace_events(
    execution_id=execution_id,
    include_internal_events=True,
)

# Filter for WORKFLOW_TASK_COMPLETED events
valid_reset_points = [
    e for e in events
    if e.event_type == "WORKFLOW_TASK_COMPLETED"
]

Si vous fournissez un ID d'événement invalide, l'API renvoie une erreur WF_1001 avec un champ valid_reset_events listant les alternatives valides.

Bonnes pratiques

Bonnes pratiques

  1. Corrigez d'abord la cause racine — réinitialiser sans corriger le bug reproduira le même échec
  2. Fournissez toujours une raison — elle est enregistrée dans l'historique d'événements pour l'audit
  3. Utilisez exclude_signals avec précaution — ignorer les signaux signifie que toute entrée externe reçue après le point de réinitialisation ne sera pas rejouée
  4. Testez votre correction — déployez et testez la correction sur un espace de travail de développement avant de réinitialiser les workflows de production