# Dokumentasi Django 4.2.9.dev20231204082947

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

Like WSGI, ASGI has you supply an `application` callable which the application server uses to communicate with your code. It's commonly provided as an object named `application` in a Python module accessible to the server.

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.

Do not call blocking synchronous functions or libraries in any async code. Django prevents you from doing this with the parts of Django that are not async-safe, but the same may not be true of third-party apps or Python libraries.

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