5

这样做更好吗

from pymongo import Connection

conn = Connection()
db = conn.db_name

def contrivedExample(firstName)
    global db
    return db.people.find_one({'first-name': firstName})

或者

from pymongo import Connection

def contrivedExample(firstName):
    with Connection() as conn:
        return conn.db_name.people.find_one({'first-name': firstName})

各种基本的 MongoDB 教程(无论是否面向 Python)都暗示应用程序应该在启动时连接一次;真的是这样吗?对于非平凡的、长时间运行的应用程序,答案是否会改变?Web 应用程序的答案是否会有所变化?单连接与按请求连接的优缺点是什么?

假设“启动时一次”是正确答案,那么在 中启动该连接是否合适__init__.py

4

1 回答 1

4

pymongo Connection 类支持连接池,从 2.2 版开始,该auto_start_request选项可确保在线程的生命周期内将相同的套接字用于连接活动(默认行为)。此外,有必要时重新连接的内置支持,尽管您的应用程序代码应该处理即时异常。

对于您的问题,我相信最好依靠 pymongo 自己的连接池并为每个线程请求一个新连接。此 Stack Overflow 线程还讨论了一些最佳实践并解释了一些可用的选项,您可能会发现它们很有帮助。如有必要,您可以选择在线程之间共享同一个套接字。

于 2012-10-12T18:30:22.923 回答