我在连接到 mongodb Atlas 时收到此错误:“dns.exception.Timeout:DNS 操作在 30.000985383987427 秒后超时”
Posted
技术标签:
【中文标题】我在连接到 mongodb Atlas 时收到此错误:“dns.exception.Timeout:DNS 操作在 30.000985383987427 秒后超时”【英文标题】:i am getting this error while connecting to mongodb Atlas: "dns.exception.Timeout: The DNS operation timed out after 30.000985383987427 seconds" 【发布时间】:2019-08-14 20:22:51 【问题描述】:我正在使用 Flask-PyMongo 将我的 Flask 应用程序连接到 mongodb atlas,但出现此错误。
“dns.exception.Timeout:DNS操作在30.000985383987427秒后超时”
然后它说: 在处理上述异常的过程中,又出现了一个异常:
“pymongo.errors.ConfigurationError:DNS 操作在 30.000985383987427 秒后超时”
代码如下:
from flask import Flask
from flask_pymongo import PyMongo
app = Flask(__name__)
app.config['MONGO_DBNAME'] = 'FirstCluster'
app.config['MONGO_URI'] = 'mongodb+srv://username:password@firstcluster-bblvc.mongodb.net/test?retryWrites=true'
mongo = PyMongo(app)
@app.route('/connect')
def connect_to_mongo():
return 'Connecting to Mongodb'
@app.route('/collections')
def adding():
user = mongo.db.users
user.insert('name' : 'vatsalay')
return 'Added User!'
if __name__ == '__main__':
app.run(debug=True)
【问题讨论】:
DNS 超时可能是网络问题的结果。它可能是暂时的(只是一个传递的东西)或者您运行代码的机器需要配置检查是否允许 DNS 协议,或者 Atlas 实例没有运行。还请确保您将您的客户端应用程序主机地址添加到允许的 Atlas 客户端的白名单中,或类似地允许从该计算机访问。 你是对的,这只是一个过渡阶段。 我正在开发 Flask 应用程序,安装 eventlet 后我遇到了同样的问题。但是当我卸载它时,超时问题就消失了。希望这对某人有所帮助... 【参考方案1】:尝试使用不同的连接字符串。我在使用 3.6 或更高版本的字符串时遇到问题。只需使用 3.4 或更高版本的字符串即可立即连接。
如果你坚持使用较新的连接字符串,则需要安装pymongo srv
对于 Windows
pip install pymongo[srv]
对于 Mac
pip3 install pymongo[srv]
在 zsh 上
pip3 install 'pymongo[srv]'
【讨论】:
你用的是哪个操作系统?? 它的坚果,这实际上是一个完美的解决方案【参考方案2】:看来您必须安装 pymongo[srv] 才能使 mongodb+srv
URI 工作。
尝试使用pip3 install 'pymongo[srv]'
安装它
【讨论】:
【参考方案3】:尝试使用不同版本的连接字符串。您可以更改集群中的版本 -> 连接 -> 连接您的应用程序。
【讨论】:
【参考方案4】:这可能是您的 Mongo 客户端无法找到与服务器的连接时导致的错误。所以,最好检查你的互联网连接,然后运行程序
【讨论】:
【参考方案5】:有同样的问题,它通过将我的 dns 从自动更改为“8.8.8.8”对我有用。 如何? 如果您使用的是 Windows,请执行以下操作
-
打开网络和互联网设置
网络和共享中心
按下您的互联网连接 Wi-fi(路由器名称)
礼尚往来
选择tcp/ipv4再去礼节
选择这个并编辑它“使用以下 dns 服务器并选择”8.8.8.8 (google dns)
正如 Neil Lunn 所说,检查允许的 ips
【讨论】:
就我而言,这只是一个过渡阶段,正如@Neil Lunn 之前所说。因此,如果你们中的任何人遇到此问题,请等待一天,它将得到解决。如果它只是一个过渡阶段。【参考方案6】:Google App Engine 标准中的同样问题。
在我的情况下是使用旧类型 URL 的解决方案:
client = pymongo.MongoClient("mongodb://USERNAME:PASSWORD@CLUSTER...
西南:
Ubuntu 18.04 Python 2.7.17 / 2.7.12 Pymongo 3.11.1 谷歌云 SDK 319.0.0直接从 os 连接测试文件没问题,但从 Google SDK dev appserver2 运行相同的代码失败。
更改后由 cloud.mongodb.com Atlas 生成的 URL 在集群部分 -> 连接 -> 选择连接方法 -> Python - 3.4 或更高版本 连接已建立。
【讨论】:
【参考方案7】:我使用的是 python 3.6.2,所以我选择使用“3.6 或更高版本”的连接字符串。它给了我这个错误。后来我用“3.4或更高版本”的连接字符串尝试了它。效果很好。
尝试使用“3.4 或更高版本”的连接字符串。
【讨论】:
【参考方案8】:我遇到了类似的问题。突然连不上。我所有的同事都在使用相同的 python 版本等。
几天前,另一位同事在使用手机 wifi 时超时。当他们切换到正常的 wifi 时,他们可以连接。
重新启动 wifi 后,我就可以连接了。
这不是一个很好的解决方案,但值得一试。
【讨论】:
以上是关于我在连接到 mongodb Atlas 时收到此错误:“dns.exception.Timeout:DNS 操作在 30.000985383987427 秒后超时”的主要内容,如果未能解决你的问题,请参考以下文章
尝试将 Heroku 连接到 Atlas MongoDB 时出现问题
MongoError:在 mongoDB atlas 中首次连接时无法连接服务
MongoError:在 mongoDB atlas 中首次连接时无法连接服务