Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/349.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么用python';卡桑德拉是谁的司机?_Python_Amazon Web Services_Cassandra_Amazon Keyspaces - Fatal编程技术网

为什么用python';卡桑德拉是谁的司机?

为什么用python';卡桑德拉是谁的司机?,python,amazon-web-services,cassandra,amazon-keyspaces,Python,Amazon Web Services,Cassandra,Amazon Keyspaces,我有一个API,是一个在AWSEC2上部署python的flask应用程序。一些端点需要连接AWS密钥空间以进行查询。但是方法cluster.connect()太慢,连接需要5秒钟,然后运行查询 我所做的是在应用程序启动时启动一个连接(在主分支上完成提交时,我使用CodePipeline),然后连接一直打开 我在python cassandra驱动程序文档中没有发现任何与此相关的内容,我发现的解决方案是否存在任何潜在问题?这是一种推荐的方法-在启动时打开连接并保持连接(每个应用程序有一个连接)。

我有一个API,是一个在AWSEC2上部署python的flask应用程序。一些端点需要连接AWS密钥空间以进行查询。但是方法
cluster.connect()
太慢,连接需要5秒钟,然后运行查询

我所做的是在应用程序启动时启动一个连接(在主分支上完成提交时,我使用CodePipeline),然后连接一直打开


我在python cassandra驱动程序文档中没有发现任何与此相关的内容,我发现的解决方案是否存在任何潜在问题?

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

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

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

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

schema_metadata_enabled = False
token_metadata_enabled = False 

    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)