15
我知道pymongo
是線程安全的並具有內置連接池。pymongo連接池和客戶端請求
在我正在處理的Web應用程序中,我正在爲每個請求創建一個新的連接實例。
我的理解是,由於pymongo
管理連接池,所以在每個請求上創建一個新連接並不是錯誤的方法,因爲在請求結束時連接實例將被回收並在後續請求中可用。
我在這裏糾正,還是應該創建一個跨多個請求使用的實例?
我知道pymongo
是線程安全的並具有內置連接池。pymongo連接池和客戶端請求
在我正在處理的Web應用程序中,我正在爲每個請求創建一個新的連接實例。
我的理解是,由於pymongo
管理連接池,所以在每個請求上創建一個新連接並不是錯誤的方法,因爲在請求結束時連接實例將被回收並在後續請求中可用。
我在這裏糾正,還是應該創建一個跨多個請求使用的實例?
「錯誤的方法」取決於您的應用程序的體系結構。由於pymongo是線程安全和自動連接池,實際使用單個共享連接或多個連接將「正常工作」。但結果將取決於你期望的行爲。文件對這兩種情況的評論。
如果您的應用程序是通過文檔進行線程化的,則訪問連接的每個線程都將獲得自己的套接字。因此,無論您是創建單個共享連接還是請求新共享連接,都取決於您的請求是否是線程化的。
使用gevent時,每個greenlet可以有一個套接字。這意味着您不必爲每個請求創建一個真正的線程。這些請求可以是異步的,並且仍然可以獲得它們自己的套接字。
一言以蔽之: