async-python-patterns
تطبيق أنماط بايثون غير المتزامنة
متاح أيضًا من: wshobson,ActiveInferenceInstitute
بناء تطبيقات بايثون عالية الأداء باستخدام أنماط asyncio لعمليات الإدخال والإخراج المتزامنة، وواجهات برمجة التطبيقات غير المتزامنة، والأنظمة غير المسدودة.
تنزيل ZIP المهارة
رفع في Claude
اذهب إلى Settings → Capabilities → Skills → Upload skill
فعّل وابدأ الاستخدام
اختبرها
استخدام "async-python-patterns". كيف أقوم بتشغيل مهام غير متزامنة متعددة بشكل متزامن في Python؟
النتيجة المتوقعة:
استخدم asyncio.gather() لتشغيل عدة coroutines بشكل متزامن. مثال: results = await asyncio.gather(task1(), task2(), task3()). لمعالجة الأخطاء، استخدم return_exceptions=True لالتقاط الأعطال دون إيقاف المهام الأخرى.
استخدام "async-python-patterns". ما الفرق بين asyncio.create_task و asyncio.ensure_future؟
النتيجة المتوقعة:
create_task() يجدول coroutine للعمل على حلقة الأحداث ويعيد Task (Python 3.7+). ensure_future() يقبل كلًا من coroutines و futures، ويعيد Task. استخدم create_task() للـ coroutines الجديدة؛ استخدم ensure_future() عندما قد تستقبل future موجودًا.
استخدام "async-python-patterns". كيف أضيف مهلة زمنية لعملية غير متزامنة؟
النتيجة المتوقعة:
استخدم asyncio.wait_for() للمهل الزمنية البسيطة: await asyncio.wait_for(async_func(), timeout=5.0). للعمليات المتعددة، استخدم asyncio.wait() مع timeout وتعامل مع استثناء 'timeout' في كتلة 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.
الأنماط المكتشفة
درجة الجودة
ماذا يمكنك بناءه
بناء واجهة برمجة تطبيقات ويب غير متزامنة
إنشاء REST API عالي الأداء باستخدام FastAPI مع استعلامات قاعدة بيانات متزامنة ونقاط نهاية غير متزامنة
جلب البيانات المتزامن
جلب موارد API متعددة في وقت واحد باستخدام asyncio.gather مع معالجة مناسبة للأخطاء والمهل الزمنية
خلفية التطبيق في الوقت الفعلي
تنفيذ خوادم WebSocket ومعالجة الرسائل غير المتزامنة لأنظمة الدردشة أو الإشعارات المباشرة
جرّب هذه الموجهات
أرني كيفية كتابة دالة غير متزامنة بسيطة في Python تجلب البيانات من URL. تتضمن معالجة مناسبة للأخطاء ومهلة زمنية.
أحتاج إلى جلب البيانات من 5 نقاط نهاية API مختلفة بشكل متزامن. أرني كيفية استخدام asyncio.gather مع return_exceptions=True لمعالجة الأخطاء.
أنشئ مدير سياق غير متزامن يتصل بقاعدة بيانات، وي_yield اتصالاً، ويغلقه بشكل صحيح عند الخروج. يتضمن معالجة الأخطاء.
ابنِ دالة غير متزامنة جاهزة للإنتاج تستعلم عن قاعدة بيانات مع تجمع اتصالات، وتنفذ منطق إعادة المحاولة مع التراجع الأسي، وتتضمن تسجيلًا منظمًا، وتتعامل مع الإلغاء بسلاسة.
أفضل الممارسات
- أضف دائمًا مهلًا زمنية لمنع الانتظار غير المحدود - استخدم asyncio.wait_for() أو asyncio.timeout()
- استخدم التزامن المنظم مع asyncio.TaskGroup (Python 3.11+) للتنظيف التلقائي
- تعامل مع الاستثناءات صراحةً باستخدام try/except داخل الدوال غير المتزامنة، ولا تدع الاستثناءات تنتشر بصمت أبدًا
تجنب
- لا تستخدم استدعاءات متزامنة مسدودة داخل الدوال غير المتزامنة - هذا يسد حلقة الأحداث بأكملها
- تجنب 'fire and forget' بدون تتبع مناسب للمهام - احتفظ بمراجع Task لتمكين الإلغاء
- لا تخلط بين await والكود المسدود مثل time.sleep() - استخدم asyncio.sleep() بدلاً من ذلك
الأسئلة المتكررة
متى يجب استخدام asyncio مقابل threading؟
كيف أقوم بتشغيل كود متزامن مسدود في سياق غير متزامن؟
ما الفرق بين gather و create_task و wait؟
كيف أتعامل مع الاستثناءات في المهام المتزامنة؟
هل يمكنني استخدام async with خارج دالة غير متزامنة؟
كيف أقوم بتصحيح الكود غير المتزامن بفعالية؟
تفاصيل المطور
المؤلف
sickn33الترخيص
MIT
المستودع
https://github.com/sickn33/antigravity-awesome_skills/tree/main/skills/async-python-patternsمرجع
main
بنية الملفات