واجهة بوابة الخادم غير المتزامنة

تُعد واجهة بوابة الخادم غير المتزامن ( ASGI ) اصطلاحًا لاستدعاء خوادم الويب لإعادة توجيه الطلبات إلى أطر عمل وتطبيقات بايثون التي تدعم المعالجة غير المتزامنة . وقد تم بناؤها كخليفة لواجهة بوابة خادم الويب (WSGI).

في حين أن WSGI وفرت معيارًا لتطبيقات بايثون المتزامنة ، فإن ASGI توفر معيارًا لكل من التطبيقات غير المتزامنة والمتزامنة، مع تطبيق متوافق مع الإصدارات السابقة من WSGI وخوادم متعددة وأطر عمل للتطبيقات.

مثال

تطبيق " مرحباً بالعالم! " متوافق مع ASGI مكتوب بلغة بايثون :

async def application ( scope , receive , send ):event = await receive ()...await send ({ "type" : "websocket.send" , ... })

أين:

  • يُعرّف السطر 1 دالة غير متزامنة باسم application، والتي تأخذ ثلاثة معلمات (على عكس WSGI التي تأخذ اثنين فقط) scope، receiveو send.
    • scopeيحتوي على dictتفاصيل حول الاتصال الحالي، مثل البروتوكول والعناوين وما إلى ذلك.
    • receiveوهي sendعبارة عن دوال قابلة للاستدعاء غير متزامنة تسمح للتطبيق باستقبال وإرسال الرسائل من/إلى العميل.
  • يستقبل السطر الثاني حدثًا واردًا، على سبيل المثال، طلب HTTP أو رسالة WebSocket. awaitتُستخدم الكلمة المفتاحية لأن العملية غير متزامنة.
  • يقوم السطر 4 بإرسال استجابة غير متزامنة إلى العميل. في هذه الحالة، يتعلق الأمر باتصال WebSocket.

التوافق مع واجهة بوابة خادم الويب (WSGI)

صُممت ASGI لتكون مجموعة شاملة لـ WSGI ، وهناك طريقة محددة للترجمة بينهما، مما يسمح بتشغيل تطبيقات WSGI داخل خوادم ASGI من خلال غلاف ترجمة (متوفر في مكتبة asgiref). ويمكن استخدام مجموعة سلاسل العمليات لتشغيل تطبيقات WSGI المتزامنة بعيدًا عن حلقة الأحداث غير المتزامنة.

انظر أيضاً

مراجع

  1. "سجل الإصدارات" .
  2. "حقوق النشر" . GitHub . تم الاسترجاع في 14-09-2022 .