Compétences async-python-patterns
🐍

async-python-patterns

Sûr

Implémenter des motifs Python asynchrones

Également disponible depuis: wshobson,ActiveInferenceInstitute

Construisez des applications Python haute performance avec des motifs asyncio pour les opérations E/S concurrentes, les APIs asynchrones et les systèmes non-bloquants.

Prend en charge: Claude Codex Code(CC)
🥉 72 Bronze
1

Télécharger le ZIP du skill

2

Importer dans Claude

Allez dans Paramètres → Capacités → Skills → Importer un skill

3

Activez et commencez à utiliser

Tester

Utilisation de "async-python-patterns". Comment exécuter plusieurs tâches asynchrones de manière concurrente en Python ?

Résultat attendu:

Utilisez asyncio.gather() pour exécuter plusieurs coroutines de manière concurrente. Exemple : results = await asyncio.gather(task1(), task2(), task3()). Pour la gestion des erreurs, utilisez return_exceptions=True pour attraper les échecs sans arrêter les autres tâches.

Utilisation de "async-python-patterns". Quelle est la différence entre asyncio.create_task et asyncio.ensure_future ?

Résultat attendu:

create_task() planifie une coroutine pour s'exécuter sur la boucle d'événements et retourne une Task (Python 3.7+). ensure_future() accepte à la fois les coroutines et les futures, retournant une Task. Utilisez create_task() pour les nouvelles coroutines ; utilisez ensure_future() lorsque vous pourriez recevoir un future existant.

Utilisation de "async-python-patterns". Comment ajouter un délai d'attente à une opération asynchrone ?

Résultat attendu:

Utilisez asyncio.wait_for() pour les délais d'attente simples : await asyncio.wait_for(async_func(), timeout=5.0). Pour plusieurs opérations, utilisez asyncio.wait() avec un timeout et gérez l'exception 'timeout' dans votre bloc try/except.

Audit de sécurité

Sûr
v1 • 2/24/2026

This skill is a documentation and educational resource for async Python programming patterns. The static analyzer flagged 71 potential issues, but upon manual review, all findings are FALSE POSITIVES. The 'external_commands' detections are markdown code fences (backticks), 'network' detections are example URLs in documentation, and 'blocker' detections are benign documentation patterns. No actual security risks were found.

2
Fichiers analysés
721
Lignes analysées
0
résultats
1
Total des audits
Aucun problème de sécurité trouvé

Motifs détectés

Markdown Code Fence Detection (False Positive)Example URLs in Documentation (False Positive)Documentation Pattern Detection (False Positive)Cryptographic Algorithm Detection (False Positive)
Audité par: claude

Score de qualité

38
Architecture
100
Maintenabilité
87
Contenu
31
Communauté
100
Sécurité
100
Conformité aux spécifications

Ce que vous pouvez construire

Construire une API web asynchrone

Créez une API REST haute performance utilisant FastAPI avec des requêtes de base de données concurrentes et des points de terminaison asynchrones

Récupération de données concurrente

Récupérez plusieurs ressources API simultanément en utilisant asyncio.gather avec une gestion appropriée des erreurs et des délais d'attente

Backend d'application en temps réel

Implémentez des serveurs WebSocket et une gestion asynchrone des messages pour des systèmes de chat ou de notifications en direct

Essayez ces prompts

Demande de motif asynchrone de base
Montrez-moi comment écrire une fonction asynchrone simple en Python qui récupère des données depuis une URL. Incluez une gestion d'erreur appropriée et un délai d'attente.
Opérations concurrentes
Je dois récupérer des données depuis 5 points de terminaison API différents de manière concurrente. Montrez-moi comment utiliser asyncio.gather avec return_exceptions=True pour la gestion des erreurs.
Gestionnaire de contexte asynchrone
Créez un gestionnaire de contexte asynchrone qui se connecte à une base de données, produit une connexion, et la ferme correctement à la sortie. Incluez la gestion des erreurs.
Motif asynchrone de production
Construisez une fonction asynchrone prête pour la production qui interroge une base de données avec un pool de connexions, implémente une logique de nouvelle tentative avec backoff exponentiel, inclut une journalisation structurée, et gère l'annulation gracieusement.

Bonnes pratiques

  • Ajoutez toujours des délais d'attente pour empêcher le blocage indéfini - utilisez asyncio.wait_for() ou asyncio.timeout()
  • Utilisez la concurrence structurée avec asyncio.TaskGroup (Python 3.11+) pour un nettoyage automatique
  • Gérez explicitement les exceptions avec try/except à l'intérieur des fonctions asynchrones, ne laissez jamais les exceptions se propager silencieusement

Éviter

  • N'utilisez pas d'appels synchrones bloquants à l'intérieur des fonctions asynchrones - cela bloque toute la boucle d'événements
  • Évitez le 'fire and forget' sans suivi approprié des tâches - stockez les références Task pour permettre l'annulation
  • Ne mélangez pas await et du code bloquant comme time.sleep() - utilisez asyncio.sleep() à la place

Foire aux questions

Quand dois-je utiliser asyncio vs threading ?
Utilisez asyncio pour les tâches liées aux E/S (réseau, fichier, base de données) où l'attente domine. Utilisez threading pour les tâches liées au CPU avec un vrai parallélisme. Asyncio gère des milliers d'opérations E/S concurrentes avec moins de mémoire que les threads.
Comment exécuter du code synchrone bloquant dans un contexte asynchrone ?
Utilisez asyncio.to_thread() (Python 3.9+) ou loop.run_in_executor() pour exécuter du code synchrone bloquant dans un pool de threads sans bloquer la boucle d'événements.
Quelle est la différence entre gather, create_task et wait ?
asyncio.gather() exécute toutes les coroutines et retourne tous les résultats ensemble. create_task() planifie une seule coroutine et retourne une Task pour une attente ultérieure. asyncio.wait() retourne des ensembles done/pending sans collecter les résultats.
Comment gérer les exceptions dans les tâches concurrentes ?
Utilisez return_exceptions=True dans gather() pour attraper toutes les exceptions comme résultats. Pour la concurrence structurée, utilisez TaskGroup (Python 3.11+) qui capture les exceptions automatiquement et annule les autres tâches en cas d'échec.
Puis-je utiliser async with en dehors d'une fonction asynchrone ?
Non, async with doit être à l'intérieur d'une fonction asynchrone. Enveloppez-le avec asyncio.run() au niveau supérieur, ou utilisez une boucle d'événements en cours d'exécution dans Python 3.10+ avec asyncio.current_task().
Comment déboguer le code asynchrone efficacement ?
Utilisez la variable d'environnement PYTHONASYNCIODEBUG=1 pour les avertissements. Utilisez asyncio.get_running_loop().set_debug(True) pour des traces de pile détaillées. Installez aiomonitor ou utilisez des points d'arrêt asyncio.sleep() au lieu de points d'arrêt réguliers.

Détails du développeur

Structure de fichiers