【问题标题】:pymongo.errors.ServerSelectionTimeoutError error with MongoDB atlas and Flaskpymongo.errors.ServerSelectionTimeoutError 与 MongoDB atlas 和 Flask 错误
【发布时间】:2021-12-14 12:20:11
【问题描述】:

您好,我正在尝试将 mongoDB atlas 数据库连接到我的烧瓶 api。

当我使用以下代码(密码正确)时:

from flask import Flask, jsonify, request, redirect
from flask_pymongo import PyMongo

app = Flask(__name__)
app.config["MONGO_URI"] = "mongodb+srv://test:<password>@cluster0.xdweu.mongodb.net/myFirstDatabase?retryWrites=true&w=majority"
mongo = PyMongo(app)

#db_operations = mongo.db.<COLLECTION_NAME>
db_operations = mongo.db.test

@app.route('/test')
def test():
    return "App is working perfectly"




@app.route("/create")
def create():
    new_user = {'Name' : 'xyz', 'Age' : 20}
    db_operations.insert_one(new_user)
    #print(user['Name'],'Created successfully')
    result = {'result' : 'Created successfully'}
    return result

if __name__ == '__main__':
    app.run(debug=True)

当我测试“/test”时,我得到了一个正在运行的 api,但是当我使用“/create/”时,我得到了一个

"pymongo.errors.ServerSelectionTimeoutError"

在浏览器上。

这是整个追溯:

Traceback (most recent call last):
  File "C:\Users\umut8\AppData\Local\Programs\Python\Python310\Lib\site-packages\flask\app.py", line 2091, in __call__
    return self.wsgi_app(environ, start_response)
  File "C:\Users\umut8\AppData\Local\Programs\Python\Python310\Lib\site-packages\flask\app.py", line 2076, in wsgi_app
    response = self.handle_exception(e)
  File "C:\Users\umut8\AppData\Local\Programs\Python\Python310\Lib\site-packages\flask\app.py", line 2073, in wsgi_app
    response = self.full_dispatch_request()
  File "C:\Users\umut8\AppData\Local\Programs\Python\Python310\Lib\site-packages\flask\app.py", line 1518, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "C:\Users\umut8\AppData\Local\Programs\Python\Python310\Lib\site-packages\flask\app.py", line 1516, in full_dispatch_request
    rv = self.dispatch_request()
  File "C:\Users\umut8\AppData\Local\Programs\Python\Python310\Lib\site-packages\flask\app.py", line 1502, in dispatch_request
    return self.ensure_sync(self.view_functions[rule.endpoint])(**req.view_args)
  File "D:\Dev\api_test\appi\app.py", line 21, in create
    db_operations.insert_one(new_user)
  File "C:\Users\umut8\AppData\Local\Programs\Python\Python310\Lib\site-packages\pymongo\collection.py", line 705, in insert_one
    self._insert(document,
  File "C:\Users\umut8\AppData\Local\Programs\Python\Python310\Lib\site-packages\pymongo\collection.py", line 620, in _insert
    return self._insert_one(
  File "C:\Users\umut8\AppData\Local\Programs\Python\Python310\Lib\site-packages\pymongo\collection.py", line 609, in _insert_one
    self.__database.client._retryable_write(
  File "C:\Users\umut8\AppData\Local\Programs\Python\Python310\Lib\site-packages\pymongo\mongo_client.py", line 1551, in _retryable_write
    with self._tmp_session(session) as s:
  File "C:\Users\umut8\AppData\Local\Programs\Python\Python310\Lib\contextlib.py", line 135, in __enter__
    return next(self.gen)
  File "C:\Users\umut8\AppData\Local\Programs\Python\Python310\Lib\site-packages\pymongo\mongo_client.py", line 1948, in _tmp_session
    s = self._ensure_session(session)
  File "C:\Users\umut8\AppData\Local\Programs\Python\Python310\Lib\site-packages\pymongo\mongo_client.py", line 1935, in _ensure_session
    return self.__start_session(True, causal_consistency=False)
  File "C:\Users\umut8\AppData\Local\Programs\Python\Python310\Lib\site-packages\pymongo\mongo_client.py", line 1883, in __start_session
    server_session = self._get_server_session()
  File "C:\Users\umut8\AppData\Local\Programs\Python\Python310\Lib\site-packages\pymongo\mongo_client.py", line 1921, in _get_server_session
    return self._topology.get_server_session()
  File "C:\Users\umut8\AppData\Local\Programs\Python\Python310\Lib\site-packages\pymongo\topology.py", line 520, in get_server_session
    session_timeout = self._check_session_support()
  File "C:\Users\umut8\AppData\Local\Programs\Python\Python310\Lib\site-packages\pymongo\topology.py", line 504, in _check_session_support
    self._select_servers_loop(
  File "C:\Users\umut8\AppData\Local\Programs\Python\Python310\Lib\site-packages\pymongo\topology.py", line 218, in _select_servers_loop
    raise ServerSelectionTimeoutError(
pymongo.errors.ServerSelectionTimeoutError: connection closed,connection closed,connection closed, Timeout: 30s, Topology Description: <TopologyDescription id: 617be28dbcf14ff29dcb83b2, topology_type: ReplicaSetNoPrimary, servers: [<ServerDescription ('cluster0-shard-00-00.xdweu.mongodb.net', 27017) server_type: Unknown, rtt: None, error=AutoReconnect('connection closed')>, <ServerDescription ('cluster0-shard-00-01.xdweu.mongodb.net', 27017) server_type: Unknown, rtt: None, error=AutoReconnect('connection closed')>, <ServerDescription ('cluster0-shard-00-02.xdweu.mongodb.net', 27017) server_type: Unknown, rtt: None, error=AutoReconnect('connection closed')>]>

感谢您即将提供的任何帮助

【问题讨论】:

    标签: python mongodb flask


    【解决方案1】:

    我听说你可以通过降级你的 pymongo 版本来修复这个错误。尝试通过以下方式降级: pip install pymongo==2.8 --upgrade

    【讨论】:

      【解决方案2】:

      我也遇到了与 Mongo Atlas 没有联系的问题。 我通过去Mongo Atlas的网络访问来修复它。从那里,添加您当前的 IP 地址,然后它应该连接。 如果您的密码中有任何特殊字符,请阅读官方文档here Mongo Connection Docs 链接是here

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-04-10
        • 2019-03-06
        • 2019-05-27
        • 2021-06-07
        • 2019-11-07
        • 2020-10-26
        • 1970-01-01
        • 2020-09-16
        相关资源
        最近更新 更多