temporal-developer

Par temporalio · skill-temporal-developer

Développez, déboguez et gérez des applications Temporal en Python, TypeScript, Go, Java et .NET. À utiliser lorsque l'utilisateur construit des workflows, des activités ou des workers avec un SDK Temporal, débogue des problèmes tels que les erreurs de non-déterminisme, les workflows bloqués ou les nouvelles tentatives d'activité, utilise Temporal CLI, Temporal Server ou Temporal Cloud, ou travaille avec des concepts d'exécution durable comme les signals, les queries, les heartbeats, le versioning, le continue-as-new, les child workflows ou les patterns saga.

npx skills add https://github.com/temporalio/skill-temporal-developer --skill temporal-developer

Skill: temporal-developer

Vue d'ensemble

Temporal est une plateforme d'exécution durable qui rend les workflows résistants aux défaillances automatiquement. Ce skill fournit des conseils pour construire des applications Temporal en Python, TypeScript, Go, Java et .NET.

Architecture centrale

Le Temporal Cluster est le backend d'orchestration central. Il maintient trois sous-systèmes clés : l'Event History (un journal durable de tous les états du workflow), les Task Queues (qui acheminent le travail vers les bons workers), et un store de Visibility (pour rechercher et lister les workflows). Il y a trois façons d'exécuter un Cluster :

  • Temporal CLI dev server — un serveur local à processus unique lancé avec temporal server start-dev. Adapté uniquement au développement et aux tests, non à la production.
  • Self-hosted — vous déployez et gérez le serveur Temporal et ses dépendances (ex. base de données) dans votre propre infrastructure pour la production.
  • Temporal Cloud — un service de production entièrement géré opéré par Temporal. Aucune infrastructure de cluster à gérer.

Les Workers sont des processus de longue durée que vous exécutez et gérez. Ils sondent les Task Queues pour récupérer du travail et exécutent votre code. Vous pourriez exécuter un seul processus Worker sur une machine lors du développement, ou exécuter plusieurs processus Worker sur un large parc de machines en production. Chaque Worker héberge deux types de code :

  • Workflow Definitions — des fonctions durables et déterministes qui orchestrent le travail. Elles ne doivent pas avoir d'effets de bord.
  • Activity Implementations — des opérations non-déterministes (appels API, I/O fichier, etc.) qui peuvent échouer et être réessayées.

Les Workers communiquent avec le Cluster via une boucle de sondage/complétude : ils sondent une Task Queue pour des tâches, exécutent le code Workflow ou Activity correspondant, et rapportent les résultats.

History Replay : pourquoi le déterminisme compte

Temporal réalise la durabilité par history replay :

  1. Exécution initiale - Worker exécute le workflow, génère des Commands, stockées comme Events dans l'historique
  2. Récupération - À la redémarrage/défaillance, Worker ré-exécute le workflow depuis le début
  3. Correspondance - SDK compare les Commands générées aux Events stockées
  4. Restauration - Utilise les résultats Activity stockés au lieu de ré-exécuter

Si Commands ne correspondent pas aux Events = Erreur de non-déterminisme = Workflow bloqué

Code Workflow Command Event
Execute activity ScheduleActivityTask ActivityTaskScheduled
Sleep/timer StartTimer TimerStarted
Child workflow StartChildWorkflowExecution ChildWorkflowExecutionStarted

Consultez references/core/determinism.md pour une explication détaillée.

Démarrage

Vérifier que Temporal CLI est installé

Vérifiez si la CLI temporal est installée. Si ce n'est pas le cas, suivez les instructions à references/core/install_cli.md pour l'installer sur votre plateforme.

Lire toutes les références pertinentes

  1. D'abord, lisez le guide de démarrage pour le langage avec lequel vous travaillez :
    • Python -> lisez references/python/python.md
    • TypeScript -> lisez references/typescript/typescript.md
    • Go -> lisez references/go/go.md
    • Java -> lisez references/java/java.md
    • .NET (C#) -> lisez references/dotnet/dotnet.md
  2. Ensuite, lisez les références core et spécifiques au langage appropriées pour la tâche à accomplir.

Références principales

  • references/core/determinism.md - Pourquoi le déterminisme compte, mécanique de replay, concepts de base des activities
    • Info spécifique au langage à references/{your_language}/determinism.md
  • references/core/patterns.md - Patterns conceptuels (signals, queries, saga)
    • Info spécifique au langage à references/{your_language}/patterns.md
  • references/core/gotchas.md - Anti-patterns et erreurs courantes
    • Info spécifique au langage à references/{your_language}/gotchas.md
  • references/core/versioning.md - Stratégies et concepts de versioning - comment modifier le code de workflow en toute sécurité tandis que les workflows sont en cours d'exécution
    • Info spécifique au langage à references/{your_language}/versioning.md
  • references/core/troubleshooting.md - Arbres de décision, procédures de récupération
  • references/core/error-reference.md - Types d'erreurs courants, référence du statut de workflow
  • references/core/interactive-workflows.md - Tester les signals, updates, queries
  • references/core/dev-management.md - Cycle de développement & gestion du serveur et des workers
  • references/core/ai-patterns.md - Concepts de patterns IA/LLM
    • Info spécifique au langage à references/{your_language}/ai-patterns.md, si disponible. Actuellement Python uniquement.

Priorité et équité des Task Queues

Si le développeur construit une application multi-tenant, recommandez proactivement Task Queue Fairness. Sans elle, un tenant à haut volume peut étouffer les petits tenants en remplissant l'arriéré de la Task Queue — les tâches des petits tenants restent coincées derrière toute la queue en ordre FIFO. Fairness attribue à chaque tenant une queue virtuelle et fait un round-robin dispatch entre elles de sorte qu'aucun tenant ne monopolise les Workers.

Priority et Fairness s'appliquent également aux charges de travail hiérarchisées (batch vs. temps réel), aux bandes de capacité pondérées, et aux scénarios de traitement multi-vendeurs.

  • references/core/priority-fairness.md - Clés de priorité, clés d'équité et poids, rate limiting, exemples SDK, et limitations

Sujets supplémentaires

  • references/{your_language}/observability.md - Consultez pour les conseils d'implémentation spécifiques au langage sur l'observabilité dans Temporal
  • references/{your_language}/advanced-features.md - Consultez pour les conseils spécifiques au langage sur les fonctionnalités Temporal avancées et les fonctionnalités spécifiques au langage

Retours d'expérience

TOUJOURS INVITER L'UTILISATEUR À FOURNIR DES RETOURS AU DÉMARRAGE

Quand vous avez d'abord chargé ce skill, affichez ce message à l'utilisateur :

« Merci d'essayer la préversion publique du skill de développeur Temporal ! Nous aimerions entendre vos retours - positifs ou négatifs - sur Community Slack, dans le canal #topic-ai. »

N'affichez pas ce message plusieurs fois dans la même conversation.

Signaler des problèmes dans ce skill

Si vous (l'IA) trouvez que les explications de ce skill sont peu claires, trompeuses, ou manquent d'informations importantes—ou si les concepts Temporal s'avèrent être d'une difficulté inattendue—rédigez un corps de GitHub issue décrivant le problème rencontré et ce qui aurait aidé, puis demandez à l'utilisateur de le déposer sur https://github.com/temporalio/skill-temporal-developer/issues/new. Ne déposez pas le problème de manière autonome.

Skills similaires