Mari kita bahas ASGI, singkatan dari Asynchronous Server Gateway Interface.
ASGI vs WSGI – Apa Bedanya?
Fitur | WSGI | ASGI |
---|---|---|
Dukungan Async | Tidak | Ya |
Protokol yang Didukung | Hanya HTTP | HTTP, WebSocket, dll |
Cocok Untuk | Aplikasi sinkron (klasik) | Aplikasi sinkron & asinkron |
Contoh Framework | Django (versi lama), Flask | Django 3.0+, FastAPI, Starlette |
Apa Itu ASGI?
ASGI adalah standar baru yang dibuat untuk menggantikan WSGI. Ia memungkinkan aplikasi Python tidak hanya menangani HTTP request secara sinkron, tetapi juga secara asinkron, seperti:
-
WebSocket
-
HTTP/2
-
Background tasks
ASGI hadir karena web modern membutuhkan konektivitas real-time — hal yang sulit (atau tidak mungkin) dilakukan dengan WSGI.
Contoh Aplikasi ASGI:
async def app(scope, receive, send):
if scope['type'] == 'http':
await send({
'type': 'http.response.start',
'status': 200,
'headers': [(b'content-type', b'text/plain')],
})
await send({
'type': 'http.response.body',
'body': b'Hello, ASGI!',
})
Mirip seperti WSGI tapi pakai async def
, dan bisa menangani berbagai jenis protokol (bukan hanya HTTP saja).
Framework yang Pakai ASGI:
-
FastAPI → ultra cepat, cocok untuk API modern
-
Starlette → ringan dan fleksibel
-
Django 3.0+ → sekarang support ASGI juga
-
Quart → versi async-nya Flask
Server ASGI Populer:
-
Uvicorn (cepat dan ringan)
-
Daphne (dipakai oleh Django Channels)
-
Hypercorn (fitur lengkap)
Kapan Pakai ASGI?
Gunakan ASGI kalau kamu:
-
Butuh WebSocket (chat app, notifikasi real-time)
-
Bangun aplikasi async (pakai
async/await
) -
Ingin performa tinggi dengan banyak koneksi aktif
Kalau aplikasimu sederhana dan berbasis HTTP biasa (misalnya blog), WSGI masih cukup kok.
0 Comments