async-python-patterns
Implémenter des motifs Python asynchrones
متاح أيضًا من: 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.
تنزيل ZIP المهارة
رفع في Claude
اذهب إلى Settings → Capabilities → Skills → Upload skill
فعّل وابدأ الاستخدام
اختبرها
استخدام "async-python-patterns". Comment exécuter plusieurs tâches asynchrones de manière concurrente en Python ?
النتيجة المتوقعة:
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.
استخدام "async-python-patterns". Quelle est la différence entre asyncio.create_task et asyncio.ensure_future ?
النتيجة المتوقعة:
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.
استخدام "async-python-patterns". Comment ajouter un délai d'attente à une opération asynchrone ?
النتيجة المتوقعة:
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.
التدقيق الأمني
آمن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.
الأنماط المكتشفة
درجة الجودة
ماذا يمكنك بناءه
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
جرّب هذه الموجهات
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.
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.
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.
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.
أفضل الممارسات
- 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
تجنب
- 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
الأسئلة المتكررة
Quand dois-je utiliser asyncio vs threading ?
Comment exécuter du code synchrone bloquant dans un contexte asynchrone ?
Quelle est la différence entre gather, create_task et wait ?
Comment gérer les exceptions dans les tâches concurrentes ?
Puis-je utiliser async with en dehors d'une fonction asynchrone ?
Comment déboguer le code asynchrone efficacement ?
تفاصيل المطور
المؤلف
sickn33الترخيص
MIT
المستودع
https://github.com/sickn33/antigravity-awesome_skills/tree/main/skills/async-python-patternsمرجع
main
بنية الملفات