1

我正在尝试设置一个 django 应用程序并将其连接到 AWS Keyspaces。尝试使用 django-cassandra-engine 来实现。

我目前在设置中使用此设置,但它不起作用。

    ssl_context = SSLContext(PROTOCOL_TLSv1_2)
    ssl_context.load_verify_locations('/Users/amit/sf-class2-root.crt')
    ssl_context.verify_mode = CERT_REQUIRED

DATABASES = {
    'default': {
        'ENGINE': 'django_cassandra_engine',
        'NAME': 'Keyspace Name',
        'HOST': 'Cluster()',
        'connection': {
            'port': 9142,
            'contact_points': ['cassandra.us-east-1.amazonaws.com'],
            'ssl_context': ssl_context,
            'auth_provider': PlainTextAuthProvider(username='USERNAME',password='PASSWORD')

        }
    }
}

错误:

 File "/Users/amit/workspace/eventHandler/venv/lib/python3.9/site-packages/django_cassandra_engine/connection.py", line 78, in register
connection.get_connection(name=self.alias)

文件“/Users/amit/workspace/eventHandler/venv/lib/python3.9/site-packages/cassandra/cqlengine/connection.py”,第 247 行,在 get_connection 中引发 CQLEngineException(“连接名称 '{0}' 没有” t 存在于注册表中。".format(name)) cassandra.cqlengine.CQLEngineException:注册表中不存在连接名称“默认”。

4

2 回答 2

0

我没有使用过 Keyspaces 或 Cassandra,但是通过查看 AWS 中的端点文档python 示例,我猜测端口应该是9142而不是9042.

于 2021-06-16T08:13:45.877 回答
0

想通了:-

DATABASES = {
'default': {
    'ENGINE': 'django_cassandra_engine',
    'NAME': 'KEYSPACE_NAME',
    'HOST': 'cassandra.us-east-1.amazonaws.com',
    'OPTIONS': {
        'replication': {
            'strategy_class': 'SimpleStrategy',
            'replication_factor': 1
        },
        'connection': {
            'port': 9142,
            'ssl_context': ssl_context,
            'auth_provider': PlainTextAuthProvider(username='USERNAME',
                                                   password='PASSWORD')

        }

    }
}

}

于 2021-06-16T08:56:08.540 回答