我在Django的views.py中有一个db = pymongo.Connection()
调用,用于简单的MongoDB连接以存储一些简单的统计信息。
如何最佳实践地使其自动支持MongoDB连接池?
我需要将end_request()
代码放在哪里?
在连接过程中如何选择max_pool_size
参数?
我在Django的views.py中有一个db = pymongo.Connection()
调用,用于简单的MongoDB连接以存储一些简单的统计信息。
如何最佳实践地使其自动支持MongoDB连接池?
我需要将end_request()
代码放在哪里?
在连接过程中如何选择max_pool_size
参数?
每个Connection实例都具有内置的连接池。默认情况下,每个线程在其第一次操作时获得自己的套接字。这些套接字保持到该线程调用end_request()。
调用end_request()允许将套接字返回到池中,并由其他线程使用,而不是创建新的套接字。对于具有许多线程或长时间运行的线程的应用程序,谨慎使用此方法非常重要,这些线程对PyMongo操作进行了很少的调用。
或者,使用auto_start_request=False创建的Connection将在所有线程之间(安全地)共享套接字。
我认为这取决于您拥有的应用程序类型以及请求将保留连接的时间长度。调用end_request
的想法有助于长时间运行的请求长时间保留套接字并导致创建许多套接字。如果单个请求可以在不再需要连接时释放它,则可以重新用于其他请求。
auto_start_request=False
通过重用套接字来工作。
max_pool_size
参数的技巧吗? - est