Langsung ke konten

Arsip

Asyncio

2 artikel
Python 09 Sep 2026 8 min read

Matikan Queue Worker asyncio dengan Bersih

Pool worker asynchronous sering dimulai dengan pola sederhana: producer memasukkan job ke asyncio.Queue, consumer melakukan loop pada get(), dan aplikasi menunggu join() sebelum keluar. Bagian yang canggung adalah shutdown. Desain lama biasanya memasukkan satu nilai sentinel ke queue untuk setiap worker, membatalkan consumer setelah join(), atau mempertahankan stop event terpisah. Setiap pendekatan dapat bekerja, tetapi masing-masing menambahkan protokol kedua di samping queue itu sendiri. Python 3.13 menambahkan asyncio.Queue.shutdown() dan exception asyncio.QueueShutDown. Keduanya memungkinkan queue merepresentasikan lifecycle-nya sendiri: terbuka untuk producer, dalam proses shutdown sementara pekerjaan yang ada dikuras, lalu akhirnya tertutup bagi consumer.

Python 09 Sep 2026 9 min read

Kendalikan Startup Task asyncio dengan eager_start

Membuat task asyncio biasanya terasa seperti batas scheduling yang jelas: panggil asyncio.create_task(), simpan task yang dikembalikan, lalu biarkan event loop segera menjalankan coroutine. Python juga mendukung eager task execution, yaitu coroutine dapat mulai berjalan langsung saat task dibuat. Python 3.14 menyediakan pilihan ini secara langsung melalui keyword eager_start pada asyncio.create_task() dan melalui pembuatan task di task group. Pendekatan ini dapat menghilangkan overhead scheduling untuk coroutine yang sering selesai tanpa blocking. Namun, ia juga dapat mengubah urutan program dengan dampak yang jauh lebih penting daripada peningkatan performanya.