Daphne adalah server protokol HTTP, HTTP2 dan WebSocket untuk ASGI dan ASGI-HTTP, dikembangkan untuk mendukung Saluran Django.
Mendukung negosiasi protokol secara otomatis; tidak diperlukan awalan URL untuk menentukan titik akhir WebSocket versus titik akhir HTTP.
Cukup arahkan Daphne ke aplikasi ASGI Anda, dan secara opsional tetapkan alamat pengikatan dan port (defaultnya adalah localhost, port 8000):
daphne -b 0.0.0.0 -p 8001 Django_project.asgi:aplikasi
Jika Anda ingin menjalankan daphne di belakang server proxy, Anda dapat menggunakan soket UNIX untuk berkomunikasi di antara keduanya:
daphne -u /tmp/daphne.sock django_project.asgi:application
Jika daphne dijalankan di dalam manajer proses, Anda mungkin ingin daphne diikat ke deskriptor file yang diturunkan dari proses induk. Untuk mencapai hal ini, Anda dapat menggunakan flag --fd:
daphne --fd 5 django_project.asgi:application
Jika Anda ingin lebih mengontrol pengikatan port/soket, Anda dapat kembali menggunakan string deskripsi titik akhir twisted dengan menggunakan tanda --endpoint (-e), yang dapat digunakan beberapa kali. Baris ini akan memulai server SSL pada port 443, dengan asumsi bahwa key.pem dan crt.pem ada di direktori saat ini (memerlukan instalasi pyopenssl):
daphne -e ssl:443:privateKey=key.pem:certKey=crt.pem django_project.asgi:application
Titik akhir bahkan memungkinkan Anda menggunakan sintaks titik akhir txacme
untuk mendapatkan sertifikat otomatis dari Let's Encrypt, yang dapat Anda baca lebih lanjut di http://txacme.readthedocs.io/en/stable/.
Untuk melihat semua opsi baris perintah yang tersedia, jalankan daphne dengan flag -h
.
Daphne mendukung penghentian koneksi HTTP/2 secara asli. Namun, Anda perlu melakukan beberapa hal agar dapat berfungsi. Pertama, Anda perlu memastikan Anda menginstal tambahan Twisted http2
dan tls
:
pip install -U "Memutar[tls,http2]"
Selanjutnya, karena semua browser saat ini hanya mendukung HTTP/2 saat menggunakan TLS, Anda harus memulai Daphne dengan TLS diaktifkan, yang dapat dilakukan menggunakan sintaks titik akhir Twisted:
daphne -e ssl:443:privateKey=key.pem:certKey=crt.pem django_project.asgi:application
Alternatifnya, Anda dapat menggunakan sintaks titik akhir txacme
atau apa pun yang mengaktifkan TLS.
Anda juga harus menggunakan sistem yang memiliki OpenSSL 1.0.2 atau lebih tinggi ; jika Anda menggunakan Ubuntu, ini berarti Anda memerlukan setidaknya Ubuntu 16.04.
Sekarang, ketika Anda memulai Daphne, ia akan memberi tahu Anda hal ini di log:
18-03-2017 19:14:02,741 INFO Memulai server di ssl:port=8000:privateKey=privkey.pem:certKey=cert.pem, lapisan saluran Django_project.asgi:channel_layer. 18-03-2017 19:14:02.742 INFO Dukungan HTTP/2 diaktifkan
Kemudian, sambungkan dengan browser yang mendukung HTTP/2, dan semuanya akan berfungsi. Seringkali sulit untuk mengatakan bahwa HTTP/2 berfungsi, karena log yang diberikan Daphne kepada Anda akan sama (bagaimanapun juga, ini adalah HTTP), dan sebagian besar browser tidak memperjelasnya di jendela pemeriksa jaringan mereka. Ada ekstensi browser yang akan memberi tahu Anda dengan jelas apakah itu berfungsi atau tidak.
Daphne hanya mendukung permintaan "normal" melalui HTTP/2 saat ini; belum ada dukungan untuk fitur tambahan seperti Server Push. Namun, hal ini akan menghasilkan koneksi yang jauh lebih cepat dan biaya overhead yang lebih rendah.
Jika Anda memiliki proxy terbalik di depan situs Anda untuk menyajikan file statis atau sejenisnya, HTTP/2 hanya akan berfungsi jika proxy tersebut memahami dan melewati koneksi dengan benar.
Untuk menyetel jalur root untuk Daphne, yang setara dengan setelan WSGI SCRIPT_NAME
, Anda memiliki dua opsi:
Daphne-Root-Path
, dengan jalur root yang diinginkan sebagai nilai ASCII yang dikodekan URL. Header ini tidak akan diteruskan ke aplikasi.--root-path
dengan jalur root yang diinginkan sebagai nilai ASCII yang dikodekan URL. Header diutamakan jika keduanya disetel. Seperti halnya SCRIPT_ALIAS
, nilainya harus dimulai dengan garis miring, tetapi tidak diakhiri dengan garis miring; Misalnya:
daphne --root-path=/forum django_project.asgi:application
Daphne membutuhkan Python 3.9 atau lebih baru.
Silakan merujuk ke dokumen kontribusi Saluran utama.
Untuk menjalankan tes, pastikan Anda telah menginstal tests
tambahan dengan paket:
cd daphne/ pip install -e '.[tes]' uji coba
Untuk melaporkan masalah keamanan, silakan hubungi [email protected]. Untuk tanda tangan GPG dan informasi proses keamanan lebih lanjut, lihat https://docs.djangoproject.com/en/dev/internals/security/.
Untuk melaporkan bug atau meminta fitur baru, buka masalah GitHub baru.
Repositori ini adalah bagian dari proyek Channels. Untuk tim penggembala dan pemeliharaan, silakan lihat Channels utama readme.