# Dokumentasi Django 5.2.8

# 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:

- Bagaimana menggunakan Django dengan Daphne
- Bagaimana menggunakan Django dengan Hypercorn
- Bagaimana menggunakan Django dengan Uvicorn

## 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)