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.
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
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.pyFlux d'exécution
De bout en bout, une exécution suit ces étapes :
- Une exécution de workflow est déclenchée (via l'API, une planification ou Studio).
- Une tâche est ajoutée à la file d'attente.
- Un worker disponible récupère la tâche et commence l'exécution du workflow.
- Lorsque le workflow appelle une activité, une tâche d'activité est ajoutée à la file.
- Tout worker disponible prend en charge la tâche d'activité et l'exécute.
- Le résultat est consigné dans l'historique d'exécution.
- Le workflow reprend avec le résultat de l'activité et poursuit son exécution.
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
}| Champ | Description |
|---|---|
scheduler_url | L'endpoint de la plateforme auquel le worker est connecté |
namespace | La frontière d'isolation pour les workflows de cet espace de travail |
tls | Indique si la connexion au scheduler est chiffrée |