---
title: "Bagaimana mengembangkan dengan ASGI"
version: 4.2
locale: id
source: https://docs.djangoproject.com/id/4.2/howto/deployment/asgi/
canonical: https://djangodocs.dev/id/4.2/howto/deployment/asgi/
---
# Bagaimana mengembangkan dengan ASGI

Seperti WSGI, Django juga mendukung menyebarkan pada [ASGI](https://asgi.readthedocs.io/en/latest/), yang baru muncul standar Python untuk peladen jaringan dan aplikasi asinkron.

Perinta pengelolaan Django [`startproject`](/id/4.2/ref/django-admin/#django-admin-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](/id/4.2/howto/deployment/asgi/daphne/)
- [Bagaimana menggunakan Django dengan Hypercorn](/id/4.2/howto/deployment/asgi/hypercorn/)
- [Bagaimana menggunakan Django dengan Uvicorn](/id/4.2/howto/deployment/asgi/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`](/id/4.2/ref/django-admin/#django-admin-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`.

> **Warning**
>
> 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`](/id/4.2/topics/settings/#envvar-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)
```
