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

vat*_*lay 7 python mongodb pymongo flask

我正在使用 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://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)
Run Code Online (Sandbox Code Playgroud)

unl*_*d_J 7

尝试使用不同的连接字符串。我在使用 3.6 或更高版本的字符串时遇到了问题。只需使用 3.4 或更高版本的字符串即可立即连接。

如果您坚持使用较新的连接字符串,则需要安装 pymongo srv

对于 Windows

pip install pymongo[srv]
Run Code Online (Sandbox Code Playgroud)

对于 Mac

pip3 install pymongo[srv]
Run Code Online (Sandbox Code Playgroud)

在 zsh 上

pip3 install 'pymongo[srv]'
Run Code Online (Sandbox Code Playgroud)


小智 1

有同样的问题,它通过将我的 DNS 从自动更改为“8.8.8.8”对我有用。如何?如果您使用的是 Windows,请执行以下操作

  1. 打开网络和互联网设置
  2. 网络和共享中心
  3. 按您的互联网连接 Wi-fi(路由器的名称)
  4. 去寻求礼节
  5. 选择tcp/ipv4并再次进入properties
  6. 选择这个并编辑它“使用以下dns服务器并选择”8.8.8.8(google dns)

正如 Neil Lunn 所说,检查允许的 ip