Workers

Un worker est le processus qui exécute réellement votre code. Les workers se connectent à la plateforme Workflows, enregistrent les workflows et activités qu'ils connaissent et sondent les tâches à traiter. Quand la plateforme planifie une étape de workflow ou une activité, un worker disponible la prend en charge et l'exécute.

Les workers sont sans état et interchangeables. N'importe quel worker ayant enregistré un workflow ou une activité donné peut l'exécuter ; il n'y a aucune affinité entre une exécution et un worker spécifique. Vous pouvez donc lancer autant de workers que nécessaire : la plateforme distribue automatiquement les tâches entre eux.

Astuce

Enregistrement automatique : au démarrage d'un worker, tous ses workflows et activités sont automatiquement enregistrés auprès de la plateforme. Il n'y a aucune étape d'enregistrement séparée, de manifeste de déploiement ou de schéma à maintenir. Définissez votre workflow, pointez le worker dessus et vous pouvez l'appeler directement.

Les workers sont également tolérants aux pannes du point de vue de la plateforme : si un worker plante en cours d'exécution, la plateforme détecte l'absence de heartbeat et réattribue la tâche en cours à un autre worker. Le workflow reprend sans perte de données, car l'historique des événements contient tout ce qui est nécessaire pour reconstruire l'état.

Démarrage d'un worker

Démarrage d'un worker

Appelez run_worker() avec la liste des classes de workflow que le worker doit gérer. Le worker se connecte à la plateforme, enregistre tout et commence à sonder les tâches à traiter. Il s'exécute jusqu'à ce que le processus soit arrêté.

import asyncio
import mistralai.workflows as workflows

async def main():
    await workflows.run_worker([MyWorkflow])

if __name__ == "__main__":
    asyncio.run(main())

La variable d'environnement MISTRAL_API_KEY détermine à quel espace de travail le worker se connecte. Tous les workers partageant la même clé rejoignent le déploiement nommé par DEPLOYMENT_NAME et partagent ses files de tâches.

MISTRAL_API_KEY=your_key DEPLOYMENT_NAME=invoice-service uv run python my_worker.py
Flux d'exécution

Flux d'exécution

De bout en bout, une exécution suit ces étapes :

  1. Une exécution de workflow est déclenchée (via l'API, une planification ou Studio).
  2. Une tâche est ajoutée à la file d'attente.
  3. Un worker disponible récupère la tâche et commence l'exécution du workflow.
  4. Lorsque le workflow appelle une activité, une tâche d'activité est ajoutée à la file.
  5. Tout worker disponible prend en charge la tâche d'activité et l'exécute.
  6. Le résultat est consigné dans l'historique d'exécution.
  7. Le workflow reprend avec le résultat de l'activité et poursuit son exécution.
Infos worker

Infos worker

Pour vérifier qu'un worker est bien connecté et consulter sa configuration, appelez l'endpoint whoami :

curl -H "Authorization: Bearer $MISTRAL_API_KEY" \
  https://api.mistral.ai/v1/workflows/workers/whoami
{
  "scheduler_url": "...",
  "namespace": "mistral-workflows",
  "tls": false
}
ChampDescription
scheduler_urlL'endpoint de la plateforme auquel le worker est connecté
namespaceLa frontière d'isolation pour les workflows de cet espace de travail
tlsIndique si la connexion au scheduler est chiffrée