Bagaimana mengembangkan dengan ASGI¶
Seperti WSGI, Django juga mendukung menyebarkan pada ASGI, yang baru muncul standar Python untuk peladen jaringan dan aplikasi asinkron.
Perinta pengelolaan Django startproject
mensetel konfigurasi awalan ASGI untuk anda, dimana anda dapat merubah sesuai kebutuhan proyek anda, dan langsung peladen aplikasi patuhASGI apapun untuk digunakan.
Django menyertakan dokumentasi mulai untuk peladen ASGI berikut:
Obyek aplikasi
¶
Seperti WSGI, ASGI mempunyai pasokan application
yang dapat dipanggil dimana peladen aplikasi menggunakan untuk komunikasi dengan kode anda. Ini biasanya disediakan sebagai objek bernama application
di modul Python dapat diakses ke peladen.
Perintah startproject
membuat sebuah berkas <project_name>/asgi.py
yang mengandung seperti application
dapat dipanggil.
Itu tidak digunakan oleh server pengembangan (runserver
), tetapi anda dapat digunakan oleh peladen ASGI apapun baik dalam pengembangan maupun produksi.
Peladen ASGI biasanya mengambil jalur ke aplikasi dapat dipanggil sebagai string; untuk kebanyakan proyek Django, ini akan terlihat seperti myproject.asgi:application
.
Peringatan
Selagi penangan ASGI awalan Django akan menjalankan semua kode anda dalam antrian sinkronus, jika anda memilih menjalankan penangan asinkronus anda waspada terhadap keamanan-asinkronus.
Jangan memanggil fungsi sinkronus blok atau pustaka dalam kode asinkronus apapun. Django mencegah anda melakukan ini dengan bagian dari Django yang tidak aman-asinkronus, tetapi yang sama mungkin tidak benar dari aplikasi pihak ketiga atau pustaka Python.
Konfigurasi modul pengaturan¶
Ketika peladen ASGI memuat aplikasi anda, Django butuh meng-impor modul setelan — disitulah aplikasi keseluruhan anda ditentukan.
Django menggunakan lingkungan variabel DJANGO_SETTINGS_MODULE
untuk menempatkan modul pengaturan yang sesuai. Dia harus mengandung jalur titik pada modul pengaturan. Anda dapat menggunakan nilai berbeda untuk pengembangan dan produksi; dia semua tergantung pada bagaimana anda mengorganisasikan pengaturan anda.
Jika variabel ini tidak disetel, awalan asgi.py
mensetel itu menjadi mysite.settings
, dimana mysite
adalah nama dari proyek anda.
Memberlakukan middleware ASGI¶
Untuk memberlakukan middleware ASGI, atau membungkus Django dalam aplikasi ASGI lain, anda dapat membungkus objek application
Django di berkas asgi.py
. Sebagai contoh:
from some_asgi_library import AmazingMiddleware
application = AmazingMiddleware(application)