首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用cassandra-driver将node.js代码转换为Python2.7时出错

使用cassandra-driver将node.js代码转换为Python2.7时出错
EN

Stack Overflow用户
提问于 2019-07-26 00:24:36
回答 1查看 71关注 0票数 0

我正在尝试将node.js代码转换为Python2.7。我正在尝试连接到卡桑德拉数据库与certificates.this是我的节点代码。

代码语言:javascript
复制
var ssl_options = {
    key: fs.readFileSync('./certificates/cassandra/client/user.key.pem') ,
    cert: fs.readFileSync('./certificates/cassandra/client/user.cer.pem'),
    ca: [ fs.readFileSync('./certificates/cassandra/server/node0.cer.pem'),
    fs.readFileSync('./certificates/cassandra/server/node1.cer.pem') ]
};

  cassandra_client = new cassandra.Client(
    {
      contactPoints: utils.CASSANDRA_CONTACT_POINTS,
      sslOptions: ssl_options,
      policies: {
        loadBalancing : loadBalancingPolicy
      }
    });

Python代码:

代码语言:javascript
复制
from cassandra.cluster import Cluster
from cassandra.policies import DCAwareRoundRobinPolicy


f1 = open("user.key.pem","r")
key = f1.read()
f2= open("user.cer","r")
cert = f2.read()
f3 = open("node1.cer.pem","r").read()
f4 = open("node1.cer.pem","r").read()
ca = [f3,f4]


ssl_options = {
    "key" : key ,
    "cert": cert,
    "ca": ca,
};

cluster = Cluster(
    ['10.0.1.13', '10.0.1.9'],
    load_balancing_policy=DCAwareRoundRobinPolicy(local_dc='dc1'),
    ssl_options=ssl_options)

我得到一个错误

代码语言:javascript
复制
cassandra.cluster.NoHostAvailable: ('Unable to connect to any servers', {'10.0.1.13:9042': TypeError("wrap_socket() got an unexpected keyword argument 'cert'",), '10.0.1.9:9042': TypeError("wrap_socket() got an unexpected keyword argument 'cert'",)})

在读取证书时,我是否做错了什么?

EN

回答 1

Stack Overflow用户

发布于 2019-07-26 01:46:24

传递给Python driver的选项列表与您传递给Node.js的选项列表确实不同。你应该使用类似这样的东西(示例取自documentation):

代码语言:javascript
复制
from cassandra.cluster import Cluster, Session
from ssl import SSLContext, PROTOCOL_TLSv1, CERT_REQUIRED

ssl_context = SSLContext(PROTOCOL_TLSv1)
ssl_context.load_verify_locations('/path/to/rootca.crt')
ssl_context.verify_mode = CERT_REQUIRED
ssl_context.load_cert_chain(
    certfile='/path/to/client.crt_signed',
    keyfile='/path/to/client.key')

cluster = Cluster(['127.0.0.1'], ssl_context=ssl_context)
session = cluster.connect()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57206447

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档