Python连接Azure Cosmos DB MongoDB API时SSL握手失败求助
Python连接Azure Cosmos DB(MongoDB API)遭遇SSL握手失败问题
尝试使用Python连接采用MongoDB API的Azure Cosmos DB数据库时,创建客户端过程中遇到SSL handshake failed error,问题至今未解决。
已尝试以下操作:
- 参考相关讨论添加了推荐配置
tlsCAFile=certifi.where(),但故障依旧 - 尝试过
ssl_cert_reqs=ssl.CERT_NONE或tlsAllowInvalidCertificates=True两种不安全配置,既不想牺牲安全性,且这两种配置也无法解决问题 - 严格遵循Azure Cosmos官方教程创建客户端,环境变量已正确配置
简化后的代码如下:
import getpass import certifi import pymongo import os import sys import pymongo from dotenv import load_dotenv from random import randint #[...] def main(): """Connect to the API for MongoDB, create DB and collection, perform CRUD operations """ # Variable for resource group name load_dotenv() CONNECTION_STRING = os.environ.get("COSMOS_CONNECTION_STRING") client = pymongo.MongoClient(CONNECTION_STRING,tls=True,tlsCAFile=certifi.where()) for prop, value in vars(client.options).items(): print("Property: {}: Value: {} ".format(prop, value)) try: client.server_info() # validate connection string except pymongo.errors.ServerSelectionTimeoutError: raise TimeoutError( "Invalid API for MongoDB connection string \ or timed out when attempting to connect" ) collection = create_database_unsharded_collection(client) document_id = insert_sample_document(collection) read_document(collection, document_id) update_document(collection, document_id) delete_document(collection, document_id) if __name__ == "__main__": main()
补充疑问:当前在公司网络环境下操作,已知公司网络可能存在限制,请问该故障是否与公司网络环境有关?
环境版本信息:
- Python:
3.8.5 - python-dotenv:
1.0.0 - certifi:
2020.6.20 - pymongo:
4.4.1 - dnspython:
2.4.2 - MongoDB服务器版本:
4.2
内容的提问来源于stack exchange,提问作者yeray
相关产品推荐
相关产品推荐

