Langsung ke konten

Arsip

Python 3.13

1 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.