我知道pymongo
是线程安全的,并有一个内置的连接池。
在我工作的一个Web应用程序,我创建在每次请求一个新的连接实例。
我的理解是,由于pymongo
管理连接池,这是没有错的方法来创建对每个请求一个新的连接,在连接实例将被回收的请求结束,并将于后续请求。
我是正确这里,或者我应该只创建一个实例跨多个请求使用?
我知道pymongo
是线程安全的,并有一个内置的连接池。
在我工作的一个Web应用程序,我创建在每次请求一个新的连接实例。
我的理解是,由于pymongo
管理连接池,这是没有错的方法来创建对每个请求一个新的连接,在连接实例将被回收的请求结束,并将于后续请求。
我是正确这里,或者我应该只创建一个实例跨多个请求使用?
“错误的方式”取决于你的应用程序的架构。 随着pymongo是线程安全的,自动连接池,一个单一的共享连接或多个连接的实际使用中,是要“工作”。 但结果将取决于你所期望的行为是什么。 文档在这两种情况下评论。
如果您的应用程序线程,从文档,每个线程访问的连接将获得它自己的插座。 所以,不管你创建一个单一的共享连接,或申请一个新的,把它归结为你的请求是否螺纹与否。
当使用GEVENT,你可以为每个greenlet的插座。 这意味着你不必让每个请求的线程真实。 该请求可以是异步,仍然获得自己的插座。
简而言之: