المهارات async-python-patterns
🐍

async-python-patterns

آمن

تطبيق أنماط بايثون غير المتزامنة

متاح أيضًا من: wshobson,ActiveInferenceInstitute

بناء تطبيقات بايثون عالية الأداء باستخدام أنماط asyncio لعمليات الإدخال والإخراج المتزامنة، وواجهات برمجة التطبيقات غير المتزامنة، والأنظمة غير المسدودة.

يدعم: Claude Codex Code(CC)
🥉 72 برونزي
1

تنزيل ZIP المهارة

2

رفع في Claude

اذهب إلى Settings → Capabilities → Skills → Upload skill

3

فعّل وابدأ الاستخدام

اختبرها

استخدام "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 الخاصة بك.

التدقيق الأمني

آمن
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
الملفات التي تم فحصها
721
الأسطر التي تم تحليلها
0
النتائج
1
إجمالي عمليات التدقيق
لا توجد مشكلات أمنية

الأنماط المكتشفة

Markdown Code Fence Detection (False Positive)Example URLs in Documentation (False Positive)Documentation Pattern Detection (False Positive)Cryptographic Algorithm Detection (False Positive)
تم تدقيقه بواسطة: claude

درجة الجودة

38
الهندسة المعمارية
100
قابلية الصيانة
87
المحتوى
31
المجتمع
100
الأمان
100
الامتثال للمواصفات

ماذا يمكنك بناءه

بناء واجهة برمجة تطبيقات ويب غير متزامنة

إنشاء 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؟
استخدم asyncio للمهام المقيدة بالإدخال والإخراج (الشبكة، الملفات، قاعدة البيانات) حيث يهيمن الانتظار. استخدم threading للمهام المقيدة بوحدة المعالجة المركزية مع التوازي الحقيقي. يتعامل asyncio مع آلاف عمليات الإدخال والإخراج المتزامنة بذاكرة أقل من threads.
كيف أقوم بتشغيل كود متزامن مسدود في سياق غير متزامن؟
استخدم asyncio.to_thread() (Python 3.9+) أو loop.run_in_executor() لتشغيل كود متزامن مسدود في تجمع threads دون سد حلقة الأحداث.
ما الفرق بين gather و create_task و wait؟
asyncio.gather() يشغل كل coroutines ويعيد كل النتائج معًا. create_task() يجدول coroutine واحدة ويعيد Task للانتظار اللاحق. asyncio.wait() يعيد مجموعات done/pending دون جمع النتائج.
كيف أتعامل مع الاستثناءات في المهام المتزامنة؟
استخدم return_exceptions=True في gather() لالتقاط كل الاستثناءات كنتاج. للزامن المنظم، استخدم TaskGroup (Python 3.11+) الذي يلتقط الاستثناءات تلقائيًا ويلغي المهام الأخرى عند الفشل.
هل يمكنني استخدام async with خارج دالة غير متزامنة؟
لا، يجب أن يكون async with داخل دالة غير متزامنة. غلفه باستخدام asyncio.run() على المستوى الأعلى، أو استخدم حلقة أحداث قيد التشغيل في Python 3.10+ مع asyncio.current_task().
كيف أقوم بتصحيح الكود غير المتزامن بفعالية؟
استخدم متغير البيئة PYTHONASYNCIODEBUG=1 للتحذيرات. استخدم asyncio.get_running_loop().set_debug(True) للحصول على تتبعات مفصلة للمكدس. قم بتثبيت aiomonitor أو استخدم نقاط توقف asyncio.sleep() بدلاً من نقاط التوقف العادية.

تفاصيل المطور

بنية الملفات