Django Versi 3.1 Keatas Telah Support Asynchron

Subscribe Dengan Account Google Untuk Membaca Artikel Tanpa Iklan
Django Versi 3.1 Keatas Telah Support Asynchron

Django sebagai framework python sejuta umat, sudah cukup di kenal oleh banyak developer sebagai web framework yang handal dengan fitur super lengkap. Dari melimpahnya library dan juga dukungan komunitas yang cukup aktif dan besar ini membuat environment django cukup banyak peminatnya di berbagai negara.

Namun ada satu hal yang kurang memuaskan pada keluarga django versi 2.x dengan tidak adanya fitur asynchron, pada beberapa kasus pengembangan software yang komplek fitur asynchronous sangat diperlukan.

Pada keluarga django versi 3.1 keatas fitur ini sudah tersedia di django framework. Cara penggunaanya pun cukup simple anda tinggal memanggil modul sync_to_async perhatikan penggalan kode dibawah ini :

from asgiref.sync import sync_to_async

def _get_blog(pk):
return Blog.objects.select_related('author').get(pk=pk)

get_blog = sync_to_async(_get_blog, thread_sensitive=True)

Baca juga artikel lainya :


Bagaimana dengan Performance asynchronous ?


Ketika menjalankan dalam mode yang tidak cocok dengan function view (misalnya func view asinkron di bawah WSGI, atau func view sinkronisasi tradisional di bawah ASGI), Django harus meniru gaya panggilan lain untuk memungkinkan kode Anda dijalankan. Peralihan konteks ini menyebabkan penalti kinerja kecil sekitar satu milidetik.

Ini juga berlaku untuk middleware. Django akan mencoba meminimalkan jumlah konteks antara sinkronisasi dan asinkron. Jika Anda memiliki server ASGI, tetapi semua middleware dan tampilan Anda sinkron, ia hanya akan berpindah satu kali, sebelum memasuki tumpukan middleware.

Namun, jika Anda meletakkan middleware sinkron antara server ASGI dan view asinkron, ia harus beralih ke mode sinkronisasi untuk middleware dan kemudian kembali ke mode asinkron Django juga akan menahan utas sinkronisasi terbuka untuk perambatan pengecualian middleware. Ini mungkin tidak terlihat pada awalnya, tetapi menambahkan penalti satu utas ini per permintaan dapat menghapus keuntungan kinerja asinkron apa pun.

Anda harus melakukan pengujian kinerja Anda sendiri untuk melihat apa pengaruh ASGI versus WSGI pada kode Anda. Dalam beberapa kasus, mungkin ada peningkatan kinerja bahkan untuk basis kode sinkron murni di bawah ASGI karena kode penanganan permintaan masih berjalan secara asinkron. Secara umum Anda hanya perlu mengaktifkan mode ASGI jika Anda memiliki kode asynchronous dalam proyek Anda.

Baca artikel lainya :