Daphne هو خادم بروتوكول HTTP وHTTP2 وWebSocket لـ ASGI وASGI-HTTP، تم تطويره لتشغيل قنوات Django.
وهو يدعم التفاوض التلقائي للبروتوكولات؛ ليست هناك حاجة لبادئة عنوان URL لتحديد نقاط نهاية WebSocket مقابل نقاط نهاية HTTP.
ما عليك سوى توجيه Daphne إلى تطبيق ASGI الخاص بك، وتعيين عنوان ربط ومنفذ اختياريًا (الإعداد الافتراضي للمضيف المحلي، المنفذ 8000):
دافني -b 0.0.0.0 -p 8001 django_project.asgi:application
إذا كنت تنوي تشغيل daphne خلف خادم وكيل، فيمكنك استخدام مآخذ توصيل UNIX للتواصل بين الاثنين:
daphne -u /tmp/daphne.sock django_project.asgi:application
إذا تم تشغيل daphne داخل مدير العمليات، فقد ترغب في ربطه بواصف ملف تم تمريره من العملية الأصلية. لتحقيق ذلك يمكنك استخدام العلامة --fd :
دافني --fd 5 django_project.asgi:application
إذا كنت تريد مزيدًا من التحكم في روابط المنفذ/المقبس، فيمكنك الرجوع إلى استخدام سلاسل وصف نقطة النهاية الخاصة بـ Twisted باستخدام علامة --endpoint (-e)، والتي يمكن استخدامها عدة مرات. سيبدأ هذا السطر خادم SSL على المنفذ 443، بافتراض وجود key.pem وcrt.pem في الدليل الحالي (يتطلب تثبيت pyopenssl):
دافني -e ssl:443:privateKey=key.pem:certKey=crt.pem django_project.asgi:application
تتيح لك نقاط النهاية استخدام صيغة نقطة النهاية txacme
للحصول على شهادات تلقائية من Let's Encrypt، والتي يمكنك قراءة المزيد عنها على http://txacme.readthedocs.io/en/stable/.
لرؤية جميع خيارات سطر الأوامر المتاحة، قم بتشغيل daphne باستخدام العلامة -h
.
يدعم Daphne إنهاء اتصالات HTTP/2 محليًا. ستحتاج إلى القيام ببعض الأشياء حتى تعمل. أولاً، عليك التأكد من تثبيت إضافات Twisted http2
و tls
:
تثبيت النقطة -U "ملتوية [tls، http2]"
بعد ذلك، نظرًا لأن جميع المتصفحات الحالية تدعم HTTP/2 فقط عند استخدام TLS، فستحتاج إلى تشغيل Daphne مع تشغيل TLS، وهو ما يمكن القيام به باستخدام بناء جملة Twisted endpoint:
دافني -e ssl:443:privateKey=key.pem:certKey=crt.pem django_project.asgi:application
وبدلاً من ذلك، يمكنك استخدام صيغة نقطة النهاية txacme
أو أي شيء آخر يمكّن TLS ضمن الغطاء.
ستحتاج أيضًا إلى أن تكون على نظام يحتوي على OpenSSL 1.0.2 أو أحدث ؛ إذا كنت تستخدم Ubuntu، فهذا يعني أنك بحاجة إلى Ubuntu 16.04 على الأقل.
الآن، عند بدء تشغيل Daphne، يجب أن يخبرك هذا في السجل:
18-03-2017 19:14:02,741 معلومات بدء تشغيل الخادم في ssl:port=8000:privateKey=privkey.pem:certKey=cert.pem، طبقة القناة django_project.asgi:channel_layer. 18-03-2017 19:14:02,742 تم تمكين دعم معلومات HTTP/2
ثم اتصل بمتصفح يدعم HTTP/2، ومن المفترض أن يعمل كل شيء. غالبًا ما يكون من الصعب معرفة أن HTTP/2 يعمل، لأن السجل الذي يقدمه لك Daphne سيكون متطابقًا (إنه HTTP، بعد كل شيء)، ومعظم المتصفحات لا توضح ذلك في نوافذ مفتش الشبكة الخاصة بها. هناك ملحقات للمتصفح تتيح لك معرفة ما إذا كان يعمل أم لا.
يدعم Daphne الطلبات "العادية" فقط عبر HTTP/2 في الوقت الحالي؛ لا يوجد حتى الآن دعم للميزات الموسعة مثل Server Push. ومع ذلك، سيؤدي ذلك إلى اتصالات أسرع بكثير وخفض النفقات العامة.
إذا كان لديك وكيل عكسي أمام موقعك لخدمة الملفات الثابتة أو ما شابه، فلن يعمل HTTP/2 إلا إذا كان هذا الوكيل يفهم الاتصال ويمرره بشكل صحيح.
لتعيين المسار الجذر لـ Daphne، والذي يعادل إعداد WSGI SCRIPT_NAME
، لديك خياران:
Daphne-Root-Path
، مع مسار الجذر المطلوب كقيمة ASCII مشفرة URL. لن يتم تمرير هذا الرأس إلى التطبيقات.--root-path
مع المسار الجذر المطلوب كقيمة URLencoded ASCII. يكون للرأس الأولوية إذا تم تعيين كليهما. كما هو الحال مع SCRIPT_ALIAS
، يجب أن تبدأ القيمة بشرطة مائلة، ولكن لا تنتهي بواحدة؛ على سبيل المثال:
دافني --root-path=/forum django_project.asgi:application
تتطلب دافني إصدار Python 3.9 أو إصدار أحدث.
يرجى الرجوع إلى المستندات المساهمة بالقنوات الرئيسية.
لإجراء الاختبارات، تأكد من تثبيت tests
الإضافية مع الحزمة:
مؤتمر نزع السلاح دافني / تثبيت النقطة -e '.[الاختبارات]' pytest
للإبلاغ عن مشكلات أمنية، يرجى الاتصال بـ[email protected]. للحصول على توقيعات GPG والمزيد من معلومات عملية الأمان، راجع https://docs.djangoproject.com/en/dev/internals/security/.
للإبلاغ عن الأخطاء أو طلب ميزات جديدة، يرجى فتح مشكلة GitHub جديدة.
يعد هذا المستودع جزءًا من مشروع القنوات. بالنسبة لفريق الراعي والصيانة، يرجى الاطلاع على الملف التمهيدي للقنوات الرئيسية.