![](/img/trans.png)
[英]pymongo.errors.ServerSelectionTimeoutError: RepliceSetNoPrimary - MongoDB Atlas
[英]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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.