joh*_*ase 6 python ssl mongodb amazon-web-services pymongo
我正在尝试使用密钥文件连接到托管在 AWS 实例上的 MongoDB。我能够通过 ssh 连接到实例并连接到数据库,没有任何问题。当我尝试使用 pymongo 从远程位置连接到数据库时,我收到此错误:
ServerSelectionTimeoutError: SSL handshake failed: EOF occurred in violation of protocol
端口 27017 已打开,源设置为 0.0.0.0/0。
from pymongo import MongoClient
client = MongoClient('mongodb://ec2-123-45-678-910.compute-1.amazonaws.com',
27017,
ssl=True,
ssl_keyfile='/path_to/mykey.pem')
db = client.test
coll = db.foo
coll.insert_many(records)
ServerSelectionTimeoutError: SSL handshake failed: EOF occurred in violation of protocol (_ssl.c:645)
Run Code Online (Sandbox Code Playgroud)
这个问题与我的几乎相同,但是错误不同,并且发布在那里的解决方案不适用于我的问题。
这里的地址和密钥已更改,我已经在这个问题上绕了几个小时没有运气,任何帮助将不胜感激。
小智 5
由于以下问题,可能会导致此问题:
pymongo 版本(建议使用 3.3.0,这对我有用)
这可能是 DNS 问题等,实际上您可以使用以下方法检查 DNS 问题:
telnet xx.xx.xx.xx 端口
可能是防火墙问题
可能是 ssl 密钥的问题。尝试以下方法进行测试:
import os
import pymongo
import ssl
URL="url:port/db?ssl=true"
client = pymongo.MongoClient(URL, ssl_cert_reqs=ssl.CERT_NONE)
db = client.get_default_database()
print db
print db.collection_names()
Run Code Online (Sandbox Code Playgroud)
我在使用 Pymongo 模块连接到 DocumentDB Azure(数据库)时遇到了同样的问题(SSL 握手)。
错误 :
ServerSelectionTimeoutError: SSL handshake failed: EOF occurred in violation of protocol (_ssl.c:590)
我使用的是 pymongo==3.4.0
要解决这个问题:
通过安装3.3.0版本来更改pymongo的版本
pip install pymongo==3.3.0
尝试:
import pymongo
pymongo.__version__
| 归档时间: |
|
| 查看次数: |
6924 次 |
| 最近记录: |