我知道pymongo
是线程安全的并且有一个内置的连接池。
在我正在开发的 Web 应用程序中,我正在为每个请求创建一个新的连接实例。
我的理解是,由于pymongo
管理连接池,因此在每个请求上创建新连接并不是错误的方法,因为在请求结束时,连接实例将被回收并在后续请求中可用。
我在这里是正确的,还是应该只创建一个实例来跨多个请求使用?
“错误的方法”取决于您的应用程序的体系结构。由于 pymongo 是线程安全的和自动连接池,实际使用单个共享连接或多个连接将“起作用”。但结果将取决于您期望的行为。文档对这两种情况都有评论。
如果您的应用程序是线程化的,则从文档中,每个访问连接的线程都将获得自己的套接字。因此,无论您是创建一个共享连接,还是请求一个新连接,都取决于您的请求是否是线程化的。
使用 gevent 时,每个 greenlet 可以有一个套接字。这意味着您不必每个请求都有一个真正的线程。请求可以是异步的,并且仍然获得自己的套接字。
简而言之: