Bagaimana cara kerja penyatuan koneksi di PyMongo?
Setiap instans Koneksi memiliki penyatuan koneksi bawaan. Secara default, setiap utas mendapatkan soketnya sendiri yang dicadangkan pada operasi pertamanya. Soket tersebut ditahan hingga end_request() dipanggil oleh utas tersebut.
Memanggil end_request() memungkinkan soket dikembalikan ke kumpulan, dan untuk digunakan oleh utas lain alih-alih membuat soket baru. Penggunaan metode ini secara bijaksana penting untuk aplikasi dengan banyak utas atau dengan utas yang berjalan lama yang membuat sedikit panggilan ke operasi PyMongo .
Atau, Koneksi yang dibuat dengan auto_start_request=False akan membagikan soket (dengan aman) di antara semua utas.
Saya pikir itu tergantung pada jenis aplikasi yang Anda miliki dan berapa lama permintaan akan bertahan pada koneksi. Ide untuk memanggil end_request
membantu dengan permintaan yang berjalan lama yang menahan soket untuk waktu yang lama dan menyebabkan banyak soket dibuat. Jika satu permintaan dapat melepaskan koneksi saat tidak lagi membutuhkannya, soket dapat digunakan kembali untuk permintaan lain.
Jika itu adalah permintaan cepat, maka saya yakin auto_start_request=False
bekerja dengan menggunakan kembali soket.
Memastikan koneksi tetap menggunakan soket yang sama berarti akan memiliki pembacaan yang konsisten. Pikirkan jika Anda membuat kueri tetapi tertunda, dan kemudian segera membuat kueri lain dan menggunakan soket yang berbeda. Soket ini berhasil merespons sebelum sebelumnya. Anda akan memiliki data yang tidak konsisten karena tidak mencerminkan penulisan sebelumnya.