首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么用python的cassandra-driver连接到AWS键盘空间会这么慢?

为什么用python的cassandra-driver连接到AWS键盘空间会这么慢?
EN

Stack Overflow用户
提问于 2021-03-06 01:24:47
回答 2查看 178关注 0票数 2

我有一个应用程序接口,是一个使用python部署在亚马逊EC2上的flask应用程序。某些端点需要连接到AWS Keyspace才能进行查询。但是cluster.connect()方法太慢了,需要5秒的时间来连接然后运行查询。

为了解决这个问题,我所做的就是在应用程序启动时启动一个连接(当主分支上的提交完成时,我使用的是CodePipeline),然后连接一直处于打开状态。

我在python cassandra驱动程序文档中没有找到任何与此相关的东西,我发现这个解决方案是否有任何潜在的问题?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-03-06 02:44:45

这是一个推荐的方式-在开始时打开连接并保持它(并且每个应用程序有一个连接)。打开到Cassandra集群的连接是一项开销很大的操作,因为除了连接本身之外,驱动程序还会发现集群的拓扑、计算令牌范围以及许多其他事情。通常,对于“正常的”Cassandra,这应该不会很长(但仍然很昂贵),而且AWS的仿真可能会在上面增加额外的延迟。

票数 2
EN

Stack Overflow用户

发布于 2021-03-09 10:25:26

您能提供当前的连接配置吗?

默认情况下,Amazon Keyspace使用传输层安全(TLS)通信。如果您没有提供连接的证书,添加它可以帮助加快速度。有关完整的示例,请查看Keyspaces Python Sample

您还可以尝试禁用以下选项,这些选项将加快初始连接的速度。

代码语言:javascript
复制
schema_metadata_enabled = False
token_metadata_enabled = False 

Python Driver Documentation

代码语言:javascript
复制
    from cassandra.cluster import Cluster
    from ssl import SSLContext, PROTOCOL_TLSv1_2 , CERT_REQUIRED
    from cassandra.auth import PlainTextAuthProvider
    import boto3
    from cassandra_sigv4.auth import SigV4AuthProvider
    
    ssl_context = SSLContext(PROTOCOL_TLSv1_2)
    ssl_context.load_verify_locations('path_to_file/sf-class2-root.crt')
    ssl_context.verify_mode = CERT_REQUIRED
    
    boto_session = boto3.Session()
    auth_provider = SigV4AuthProvider(boto_session)
    
    cluster = Cluster(['cassandra.us-east-2.amazonaws.com'], ssl_context=ssl_context, auth_provider=auth_provider,
                      port=9142)

    cluster.schema_metadata_enabled = False
    cluster.token_metadata_enabled = False 
    
    session = cluster.connect()
    r = session.execute('select * from system_schema.keyspaces')
    print(r.current_rows)
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66496938

复制
相关文章

相似问题

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