Daphne은 Django 채널을 지원하기 위해 개발된 ASGI 및 ASGI-HTTP용 HTTP, HTTP2 및 WebSocket 프로토콜 서버입니다.
프로토콜의 자동 협상을 지원합니다. WebSocket 끝점과 HTTP 끝점을 결정하기 위해 URL 접두사가 필요하지 않습니다.
Daphne에게 ASGI 애플리케이션을 지정하고 선택적으로 바인드 주소와 포트를 설정하기만 하면 됩니다(기본값은 localhost, 포트 8000).
다프네 -b 0.0.0.0 -p 8001 django_project.asgi:응용 프로그램
프록시 서버 뒤에서 daphne을 실행하려는 경우 UNIX 소켓을 사용하여 둘 사이에서 통신할 수 있습니다.
daphne -u /tmp/daphne.sock django_project.asgi:application
daphne이 프로세스 관리자 내에서 실행되는 경우 상위 프로세스에서 전달된 파일 설명자에 바인딩하기를 원할 수 있습니다. 이를 달성하려면 --fd 플래그를 사용할 수 있습니다:
daphne --fd 5 django_project.asgi:응용 프로그램
포트/소켓 바인딩에 대한 더 많은 제어를 원할 경우 여러 번 사용할 수 있는 --endpoint (-e) 플래그를 사용하여 Twisted의 엔드포인트 설명 문자열을 사용하도록 대체할 수 있습니다. 이 줄은 key.pem 및 crt.pem이 현재 디렉터리에 있다고 가정하여 포트 443에서 SSL 서버를 시작합니다(pyopenssl을 설치해야 함).
daphne -e ssl:443:privateKey=key.pem:certKey=crt.pem django_project.asgi:application
엔드포인트에서는 txacme
엔드포인트 구문을 사용하여 Let's Encrypt에서 자동 인증서를 얻을 수도 있습니다. 자세한 내용은 http://txacme.readthedocs.io/en/stable/에서 확인할 수 있습니다.
사용 가능한 모든 명령줄 옵션을 보려면 -h
플래그와 함께 daphne을 실행하세요.
Daphne은 기본적으로 HTTP/2 연결 종료를 지원합니다. 하지만 작동하려면 몇 가지 작업을 수행해야 합니다. 먼저 Twisted http2
및 tls
extras를 설치했는지 확인해야 합니다.
pip install -U "트위스트[tls,http2]"
다음으로, 모든 현재 브라우저는 TLS를 사용할 때 HTTP/2만 지원하기 때문에 TLS를 켠 상태로 Daphne을 시작해야 하며, 이는 Twisted 엔드포인트 구문을 사용하여 수행할 수 있습니다.
daphne -e ssl:443:privateKey=key.pem:certKey=crt.pem django_project.asgi:application
또는 txacme
엔드포인트 구문이나 내부적으로 TLS를 활성화하는 다른 모든 것을 사용할 수 있습니다.
또한 OpenSSL 1.0.2 이상이 설치된 시스템을 사용해야 합니다. Ubuntu를 사용하는 경우 Ubuntu 16.04 이상이 필요하다는 의미입니다.
이제 Daphne을 시작하면 로그에 다음 내용이 표시됩니다.
2017-03-18 19:14:02,741 INFO ssl:port=8000:privateKey=privkey.pem:certKey=cert.pem, 채널 계층 django_project.asgi:channel_layer에서 서버를 시작합니다. 2017-03-18 19:14:02,742 INFO HTTP/2 지원 활성화
그런 다음 HTTP/2를 지원하는 브라우저에 연결하면 모든 것이 작동할 것입니다. Daphne이 제공하는 로그는 동일하고(결국 HTTP임) 대부분의 브라우저는 네트워크 검사기 창에서 이를 명확하게 표시하지 않기 때문에 HTTP/2가 작동하고 있는지 말하기 어려운 경우가 많습니다. 작동하는지 여부를 명확하게 알려주는 브라우저 확장 프로그램이 있습니다.
Daphne은 현재 HTTP/2를 통한 "정상" 요청만 지원합니다. 서버 푸시와 같은 확장 기능은 아직 지원되지 않습니다. 그러나 연결 속도가 훨씬 빨라지고 오버헤드가 낮아집니다.
정적 파일 등을 제공하기 위해 사이트 앞에 역방향 프록시가 있는 경우 HTTP/2는 해당 프록시가 연결을 올바르게 이해하고 통과하는 경우에만 작동합니다.
WSGI SCRIPT_NAME
설정과 동일한 Daphne의 루트 경로를 설정하려면 다음 두 가지 옵션이 있습니다.
Daphne-Root-Path
전달합니다. 이 헤더는 애플리케이션에 전달되지 않습니다.--root-path
명령줄 옵션을 설정합니다. 둘 다 설정된 경우 헤더가 우선 적용됩니다. SCRIPT_ALIAS
와 마찬가지로 값은 슬래시로 시작해야 하지만 슬래시로 끝나서는 안 됩니다. 예를 들어:
다프네 --root-path=/forum django_project.asgi:application
Daphne에는 Python 3.9 이상이 필요합니다.
주요 채널 기여 문서를 참조하세요.
테스트를 실행하려면 패키지와 함께 tests
추가로 설치했는지 확인하세요.
CD 다프네/ pip install -e '.[테스트]' 파이테스트
보안 문제를 보고하려면 [email protected]으로 문의하세요. GPG 서명 및 추가 보안 프로세스 정보는 https://docs.djangoproject.com/en/dev/internals/security/를 참조하세요.
버그를 보고하거나 새로운 기능을 요청하려면 새 GitHub 문제를 열어주세요.
이 저장소는 채널 프로젝트의 일부입니다. 셰퍼드 및 유지 관리 팀에 대해서는 기본 채널 추가 정보를 참조하세요.