【问题标题】:Is it possible for a MongoDB connection to timeout in Python?MongoDB 连接是否有可能在 Python 中超时?
【发布时间】:2013-07-16 04:29:33
【问题描述】:

(新手问题,对此感到抱歉-我刚开始使用 MongoDB)

我正在像这样在 heroku 上连接到 mongo:

self.connection = pymongo.Connection(MONGO_URL)
self.db = self.connection.app13805318

是否有可能我在几个小时后尝试使用 self.db 却无法阅读?我是否需要对连接进行某种保活或刷新?

【问题讨论】:

  • 我相信这里的最佳做法是捕获任何连接失败并重试失败。有关 pymongo 异常,请参阅以下内容,我猜 AutoReconnect 和 ConnectionFailure 对于客户端到 mongo 连接错误很重要。当遇到 mongo 到 mongo 套接字异常时,也可以抛出 OperationFailure。 api.mongodb.org/python/current/api/pymongo/errors.html
  • 谢谢@JamesWahlin!我会按照你的建议去做

标签: python mongodb heroku


【解决方案1】:

引自 Pymongo 文档:https://pymongo.readthedocs.io/en/stable/api/pymongo/mongo_client.html#pymongo.mongo_client.MongoClient

客户端对象是线程安全的,并且内置了连接池。如果操作由于网络错误而失败,则会引发 ConnectionFailure 并且客户端会在后台重新连接。应用程序代码应处理此异常(识别操作失败),然后继续执行。

因此,正如 cmets 中的 @james-wahlin 建议的那样,您不应仅仅依赖 pymongo 的连接池机制,而应始终将您对 self.db 的使用包含在 try..except 子句中。

希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 2015-10-20
    • 2017-06-22
    • 2022-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-25
    • 2017-08-01
    • 1970-01-01
    相关资源
    最近更新 更多