簡體   English   中英

pymongo.errors.ServerSelectionTimeoutError 錯誤與 MongoDB 圖集和 Flask

[英]pymongo.errors.ServerSelectionTimeoutError error with MongoDB atlas and Flask

嗨,我正在嘗試將 mongoDB atlas 數據庫連接到我的 Flask 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')>]>

感謝任何即將到來的幫助

我聽說您可以通過降級 pymongo 版本來修復此錯誤。 嘗試通過以下方式降級: pip install pymongo==2.8 --upgrade

我也遇到了與 Mongo Atlas 沒有聯系的問題。 我通過轉到Mongo Atlas的網絡訪問來修復它。 從那里,添加您當前的 IP 地址,然后它應該連接。 除了密碼中有任何特殊字符,請閱讀此處的官方文檔 Mongo Connection Docs 鏈接在此處

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM