Workers
Un worker est le processus qui exécute réellement votre code. Les workers se connectent à la plateforme Workflows, enregistrent les workflows et les activités qu'ils connaissent, et interrogent celle-ci pour obtenir des tâches. Lorsque la plateforme planifie une étape de workflow ou une activité, un worker disponible la récupère et l'exécute.
Les workers sont sans état et interchangeables. N'importe quel worker ayant enregistré un workflow ou une activité peut l'exécuter ; il n'existe aucune affinité entre une exécution donnée et un worker spécifique. Vous pouvez donc exécuter autant de workers que nécessaire, et la plateforme répartit automatiquement les tâches entre eux.
Enregistrement automatique : lorsque vous démarrez un worker, tous ses workflows et activités sont automatiquement enregistrés auprès de la plateforme. Il n'y a ni étape d'enregistrement distincte, ni manifeste de déploiement, ni schéma à maintenir. Définissez votre workflow, indiquez-le au worker, et vous pouvez l'appeler.
La plateforme assure également la tolérance aux pannes des workers : si un worker tombe en panne en cours d'exécution, elle détecte l'absence de battements de cœur et réaffecte 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émarrer 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, puis commence à interroger celle-ci pour obtenir des tâches. 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 l'espace de travail auquel le worker se connecte. Tous les workers partageant la même clé rejoignent le déploiement désigné par DEPLOYMENT_NAME et reçoivent les exécutions routées vers ce déploiement.
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 passe par les étapes suivantes :
- Une exécution de workflow est déclenchée (via l'API, une planification ou Studio).
- La plateforme planifie une tâche de workflow pour le déploiement.
- Un worker disponible récupère la tâche et commence à exécuter le workflow.
- Lorsque le workflow appelle une activité, la plateforme planifie une tâche d'activité pour le déploiement.
- N'importe quel worker disponible récupère 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 continue son exécution.
Informations sur le worker
Pour vérifier qu'un worker est connecté et inspecter 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 | Le cloisonnement des workflows de cet espace de travail |
tls | Indique si la connexion au scheduler est chiffrée |