Daphne es un servidor de protocolo HTTP, HTTP2 y WebSocket para ASGI y ASGI-HTTP, desarrollado para potenciar los canales Django.
Soporta negociación automática de protocolos; no es necesario un prefijo de URL para determinar los puntos finales de WebSocket frente a los puntos finales HTTP.
Simplemente apunte a Daphne a su aplicación ASGI y, opcionalmente, establezca una dirección de enlace y un puerto (el valor predeterminado es localhost, puerto 8000):
daphne -b 0.0.0.0 -p 8001 django_project.asgi: aplicación
Si tiene intención de ejecutar daphne detrás de un servidor proxy, puede utilizar sockets UNIX para comunicarse entre los dos:
daphne -u /tmp/daphne.sock django_project.asgi:aplicación
Si daphne se ejecuta dentro de un administrador de procesos, es posible que desee vincularlo a un descriptor de archivo transmitido desde un proceso principal. Para lograr esto, puedes usar el indicador --fd:
daphne --fd 5 django_project.asgi: aplicación
Si desea tener más control sobre los enlaces de puerto/socket, puede recurrir al uso de cadenas de descripción de punto final de Twisted utilizando el indicador --endpoint (-e), que se puede usar varias veces. Esta línea iniciaría un servidor SSL en el puerto 443, suponiendo que key.pem y crt.pem existan en el directorio actual (requiere la instalación de pyopenssl):
daphne -e ssl:443:privateKey=key.pem:certKey=crt.pem django_project.asgi:aplicación
Los puntos finales incluso le permiten usar la sintaxis del punto final txacme
para obtener certificados automáticos de Let's Encrypt, sobre el cual puede leer más en http://txacme.readthedocs.io/en/stable/.
Para ver todas las opciones de línea de comando disponibles, ejecute daphne con el indicador -h
.
Daphne admite la terminación de conexiones HTTP/2 de forma nativa. Sin embargo, necesitarás hacer un par de cosas para que funcione. Primero, debes asegurarte de instalar los extras de Twisted http2
y tls
:
instalación de pip -U "Torcido[tls,http2]"
A continuación, debido a que todos los navegadores actuales solo admiten HTTP/2 cuando se usa TLS, deberá iniciar Daphne con TLS activado, lo que se puede hacer usando la sintaxis del punto final Twisted:
daphne -e ssl:443:privateKey=key.pem:certKey=crt.pem django_project.asgi:aplicación
Alternativamente, puede usar la sintaxis del punto final txacme
o cualquier otra cosa que habilite TLS internamente.
También necesitarás estar en un sistema que tenga OpenSSL 1.0.2 o superior ; Si estás usando Ubuntu, esto significa que necesitas al menos Ubuntu 16.04.
Ahora, cuando inicies Daphne, debería decirte esto en el registro:
2017-03-18 19:14:02,741 INFORMACIÓN Iniciando el servidor en ssl:port=8000:privateKey=privkey.pem:certKey=cert.pem, capa de canal django_project.asgi:channel_layer. 2017-03-18 19:14:02,742 INFORMACIÓN Soporte HTTP/2 habilitado
Luego, conéctese con un navegador que admita HTTP/2 y todo debería estar funcionando. A menudo es difícil saber que HTTP/2 está funcionando, ya que el registro que Daphne le proporciona será idéntico (después de todo, es HTTP), y la mayoría de los navegadores no lo hacen obvio en sus ventanas de inspección de red. Existen extensiones de navegador que te permitirán saber claramente si está funcionando o no.
Daphne sólo admite solicitudes "normales" a través de HTTP/2 en este momento; todavía no hay soporte para funciones extendidas como Server Push. Sin embargo, dará como resultado conexiones mucho más rápidas y menores gastos generales.
Si tiene un proxy inverso frente a su sitio para servir archivos estáticos o similares, HTTP/2 solo funcionará si ese proxy comprende y pasa a través de la conexión correctamente.
Para establecer la ruta raíz para Daphne, que es el equivalente a la configuración WSGI SCRIPT_NAME
, tiene dos opciones:
Daphne-Root-Path
, con la ruta raíz deseada como un valor ASCII codificado en URL. Este encabezado no se transmitirá a las aplicaciones.--root-path
con la ruta raíz deseada como un valor ASCII codificado en URL. El encabezado tiene prioridad si ambos están configurados. Al igual que con SCRIPT_ALIAS
, el valor debe comenzar con una barra, pero no terminar con una; Por ejemplo:
daphne --root-path=/forum django_project.asgi:aplicación
Daphne requiere Python 3.9 o posterior.
Consulte los documentos que contribuyen a los canales principales.
Para ejecutar pruebas, asegúrese de haber instalado las tests
adicionales con el paquete:
cd dafne/ instalación de pip -e '.[pruebas]' pytest
Para informar problemas de seguridad, comuníquese con [email protected]. Para firmas GPG y más información sobre procesos de seguridad, consulte https://docs.djangoproject.com/en/dev/internals/security/.
Para informar errores o solicitar nuevas funciones, abra una nueva edición de GitHub.
Este repositorio es parte del proyecto Canales. Para conocer el equipo de pastor y mantenimiento, consulte el archivo Léame de los canales principales.