如何使用cassandraapi将Python的cosmos_客户端连接到cosmos DB实例?

2024-05-15 02:49:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经建立了一个cosmosdb(cassandraapi)实例,我想从Python应用程序管理它的吞吐量。我能创造一个azure.cosmos.cosmos_客户端使用Azure中列出的cassandra端点和主密码没有错误,但是所有尝试与客户端交互的结果都是“azure.cosmos.errors.HTTPFailure:状态代码:404”。在

我已经通过Python中的cassandra驱动程序成功地与这个数据库交互,但是我希望访问cosmos客户机,通过代码来管理吞吐量供应。我想自动调整吞吐量,因为数据库使用在高利用率和几乎没有活动之间波动。在

创建一个cosmos_客户端需要一个有效的URI,其中包括schema(https/http/ftp等)。azure上列出的用于通过cqlsh连接的端点以及Python cassandra驱动程序未指定架构。 我在提供的端点的开头添加了“https://”,并且能够用Python创建客户机(“http://”会导致错误,也会验证不正确的地址也会导致错误,即使使用“https://”)。 现在我已经创建了一个客户机对象,我尝试与它进行的任何交互都会给我404个错误。在

client = cosmos_client.CosmosClient(f'https://{COSMOS_CASSANDRA_ENDPOINT}', {'masterKey': COSMOS_CASSANDRA_PASSWORD} )

client.ReadEndpoint
        #'https://COSMOS_CASSANDRA_ENDPOINT'

client.GetDatabaseAccount(COSMOS_CASSANDRA_ENDPOINT)
        #azure.cosmos.errors.HTTPFailure: Status code: 404

client.ReadDatabase(EXISTING_KEYSPACE_NAME)
        #azure.cosmos.errors.HTTPFailure: Status code: 404

我想知道使用cosmos_客户机是否是与cosmos Cassandra实例交互以修改Python应用程序吞吐量的正确方式。如果是这样,我应该如何正确设置cosmos_客户端? 也许有一种方法可以直接通过使用cassandra驱动程序修改数据库来实现这一点。在


Tags: httpsclient客户端客户机错误驱动程序端点azure
1条回答
网友
1楼 · 发布于 2024-05-15 02:49:18

在尝试通过CosmsClient或Python和.NET中的DocumentClient访问数据库并失败了一段时间后,我一直无法使此功能正常工作。最终,我发现了两种方法,每种方法都有点老套,并提出了一些似乎不必要的挑战。在

最后,我所做的是通过调用azurecli来更改吞吐量的子进程来实现这一点。这是执行的命令:

f'az cosmosdb cassandra table throughput update  account-name {__cosmos_instance_name}  keyspace-name {__cassandra_keyspace}  name {table_name}  resource-group {__cosmos_resource_group}  throughput {new_throughput}'

我发现这两种方法都很不幸,当目标数据库由于速率限制而被限制时,这两种方法都不起作用。这意味着在调用代码执行伸缩之前,我们还必须实现一些逻辑来限制我们自己的服务与数据库的交互。在

关于我们的解决方案的其他注意事项: 该服务托管在kubernetes中,因此我们在pod上的生命周期钩子中添加了度量评估和缩放执行。当我们在处理cassandra交互过程中遇到可疑的速率限制时,也会执行自动定标器cassandra.cluster.NOHOST可用例外情况。在

。。。在

另一种通过代码设置配置吞吐量的方法是通过cassandra驱动程序直接执行cql(在Python中):

^{pr2}$

当我有机会时,我会切换到这种方法,因为它不需要安装azurecli和调用子进程。在

我想我是从here得到这个想法的。在

相关问题 更多 >

    热门问题