连接到mongodb Atlas时出现此错误:“ dns.exception.Timeout:30.000985383987427秒后,DNS操作超时”

时间:2019-03-24 11:50:24

标签: python mongodb flask pymongo

我正在使用Flask-PyMongo将我的Flask应用程序连接到mongodb地图集,但出现此错误。

“ 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://vatsalay:7879229242@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)

8 个答案:

答案 0 :(得分:4)

尝试使用其他连接字符串。我在使用3.6或更高版本的字符串时遇到问题,尝试更改DNS和所有内容。只需使用3.4或更高版本的字符串,即可立即连接。

答案 1 :(得分:0)

通过将我的dns从自动设置为8.8.8.8,对我也有同样的问题 怎么样? 如果您是Windows

  1. 打开网络和互联网设置
  2. 网络和共享中心
  3. 按下您的互联网连接WLAN(路由器的名称)
  4. 追求礼仪
  5. 选择tcp / ipv4并再次进入礼仪
  6. 选择该名称并对其进行编辑,“使用以下dns服务器并选择” 8.8.8.8(google dns)

也正如尼尔·伦恩(Neil Lunn)所说,检查允许的ips

答案 2 :(得分:0)

好像您必须安装pymongo [srv]才能使mongodb+srv URI起作用。
尝试使用pip3 install 'pymongo[srv]'

安装

答案 3 :(得分:0)

当您的Mongo Client无法找到与服务器的连接时,这可能是一个错误。因此,最好检查一下您的互联网连接,然后运行程序

答案 4 :(得分:0)

Google App Engine标准中的相同问题。

就我而言,是使用旧类型URL的解决方案:

client = pymongo.MongoClient("mongodb://USERNAME:PASSWORD@CLUSTER...

SW:

  • Ubuntu 18.04
  • Python 2.7.17 / 2.7.12
  • Pymongo 3.11.1
  • Google Cloud SDK 319.0.0

直接从os与测试文件建立连接是可以的,但是从Google SDK dev appserver2运行的相同代码失败。

更改后由cloud.mongodb.com Atlas生成的URL 在“群集”->“连接”->“选择连接方法”->“ Python”-3.4或更高版本中 连接已建立。

答案 5 :(得分:0)

我使用的是python 3.6.2,因此我选择将连接字符串用于“ 3.6或更高版本”。它给了我这个错误。后来我尝试使用“ 3.4或更高版本”的连接字符串进行尝试。效果很好。

尝试将连接字符串用于“ 3.4或更高版本”。

答案 6 :(得分:0)

尝试使用不同版本的连接字符串。您可以在集群中更改版本 -> 连接 -> 连接您的应用程序。

enter image description here

答案 7 :(得分:-1)

我遇到了类似的问题。突然连接不上了我所有的同事都使用相同的python版本等。

几天前,另一位同事在使用手机 wifi 时超时。当他们切换到普通 wifi 时,他们可以连接。

重新启动 wifi 后,我就可以连接了。

这不是一个很好的解决方案,但值得一试。