解決pymongo連接數(shù)據(jù)庫(kù)報(bào)錯(cuò)certificate verify failed:certificate has expired
問題
使用 pymongo.MongoClient 建立連接時(shí)報(bào)錯(cuò)
[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: certificate has expired
之前遇到過一次這個(gè)錯(cuò)誤,解決掉之后今天又遇到一次,記錄一下。
具體的報(bào)錯(cuò)內(nèi)容:
pymongo.errors.ServerSelectionTimeoutError:
xxxxxx.net:27017: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: certificate has expired (_ssl.c:1129),
xxxxxx.net:27017: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: certificate has expired (_ssl.c:1129),
xxxxxx.net:27017: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: certificate has expired (_ssl.c:1129),
Timeout: 30s,
Topology Description: <TopologyDescription id: 631d41e5181176036e30eacc, topology_type: ReplicaSetNoPrimary, servers: [
<ServerDescription ('xxxxxx.net', 27017) server_type: Unknown, rtt: None, error=AutoReconnect('xxxxxx.net:27017: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: certificate has expired (_ssl.c:1129)')>,
<ServerDescription ('xxxxxx.net', 27017) server_type: Unknown, rtt: None, error=AutoReconnect('xxxxxx.net:27017: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: certificate has expired (_ssl.c:1129)')>,
<ServerDescription ('xxxxxx.net', 27017) server_type: Unknown, rtt: None, error=AutoReconnect('xxxxxx.net:27017: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: certificate has expired (_ssl.c:1129)')>
]>
解決
1.安裝 certifi:
pip install certifi
2.連接時(shí)加入 tlsCAFile 參數(shù):
import certifi client = pymongo.MongoClient( f"mongodb+srv://{db_username}:{db_password}@{db_host}/?retryWrites=true&w=majority", server_api=ServerApi('1'), tlsCAFile=certifi.where() )
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Python調(diào)用adb命令實(shí)現(xiàn)對(duì)多臺(tái)設(shè)備同時(shí)進(jìn)行reboot的方法
今天小編就為大家分享一篇Python調(diào)用adb命令實(shí)現(xiàn)對(duì)多臺(tái)設(shè)備同時(shí)進(jìn)行reboot的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-10-10使用Python實(shí)現(xiàn)簡(jiǎn)單的學(xué)生成績(jī)管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了Python實(shí)現(xiàn)學(xué)生成績(jī)管理系統(tǒng),使用數(shù)據(jù)庫(kù),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-01-01python利用不到一百行代碼實(shí)現(xiàn)一個(gè)小siri
這篇文章主要介紹了關(guān)于python利用不到一百行代碼實(shí)現(xiàn)了一個(gè)小siri的相關(guān)資料,文中介紹的很詳細(xì),對(duì)大家具有一定的參考借鑒價(jià)值,需要的朋友們下面來一起看看吧。2017-03-03python實(shí)現(xiàn)異常信息堆棧輸出到日志文件
今天小編就為大家分享一篇python實(shí)現(xiàn)異常信息堆棧輸出到日志文件,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-12-12Python實(shí)現(xiàn)向列表或數(shù)組添加元素
Python中的列表是一種動(dòng)態(tài)數(shù)組,可以存儲(chǔ)不同數(shù)據(jù)類型的元素,并提供多種方法進(jìn)行元素的添加和刪除,列表是Python中非常靈活和強(qiáng)大的數(shù)據(jù)結(jié)構(gòu),可以通過索引訪問、修改和操作列表中的元素,列表的創(chuàng)建十分簡(jiǎn)單,只需使用方括號(hào)括起元素,并用逗號(hào)分隔2024-09-09Python語(yǔ)法def語(yǔ)句及復(fù)雜用法實(shí)例探究
在 Python 中,def?是用于定義函數(shù)的關(guān)鍵字,本文將深入介紹def的用法和特點(diǎn),詳細(xì)說明如何定義函數(shù)、傳遞參數(shù)、返回值以及更復(fù)雜的用法2024-01-01Python Web框架Flask信號(hào)機(jī)制(signals)介紹
這篇文章主要介紹了Python Web框架Flask信號(hào)機(jī)制(signals)介紹,本文介紹Flask的信號(hào)機(jī)制,講述信號(hào)的用途,并給出創(chuàng)建信號(hào)、訂閱信號(hào)、發(fā)送信號(hào)的方法,需要的朋友可以參考下2015-01-01