繁体   English   中英

如何获取 Python SDK API 中 cosmos 查询消耗了多少请求单位

[英]How to get how much requests units consumed by cosmos query in Python SDK API

如何使用 python sdk 检查 Azure comsos DB 查询中每个请求消耗了多少请求单位。

下面的代码仅打印来自特定 ReadItem 的响应的 output,我也对查询消耗了多少请求单元感兴趣。

# -------------------------------------------------------------------------
# Copyright (c) Microsoft Corporation. All rights reserved.
# Licensed under the MIT License. See LICENSE.txt in the project root for
# license information.
# -------------------------------------------------------------------------
import azure.cosmos.cosmos_client as cosmos_client
import azure.cosmos.exceptions as exceptions
from azure.cosmos.partition_key import PartitionKey

from config import configs

HOST = configs['host']
MASTER_KEY = configs['key']
DATABASE_ID = configs['database_id']
CONTAINER_ID = configs['container_id']
client = cosmos_client.CosmosClient(HOST, {'masterKey': MASTER_KEY} )

def read_item(container, doc_id):
    id =  "9fedcb0991553b94b6e79595c9c26922b3c480940fc024fe4acd7dbad122d66b"
    pk= "/c/file1"
    response = container.read_item(item=id, partition_key=pk)
    print(response)


def run_sample():
    
    
    try:
        # setup database for this sample
        db = client.create_database_if_not_exists(id=DATABASE_ID)
        
        # setup container for this sample
        container = db.create_container_if_not_exists(id=CONTAINER_ID, partition_key=PartitionKey(path='/file_path', kind='Hash'))
        read_item(container)

    except exceptions.CosmosHttpResponseError as e:
        print('\nrun_sample has caught an error. {0}'.format(e.message))

    finally:
            print("\nrun_sample done")


if __name__ == '__main__':
    run_sample()

我尝试了以下选项

 request_charge = client.last_response_headers['x-ms-request-charge']

但是我遇到了以下错误

run_sample done
Traceback (most recent call last):
  File "/Users/vcimalap/Library/CloudStorage/OneDrive-Microsoft/my_code/my_test_code/k8s/smb.yaml/cosmos_db/query.py", line 197, in <module>
    run_sample()
  File "/Users/vcimalap/Library/CloudStorage/OneDrive-Microsoft/my_code/my_test_code/k8s/smb.yaml/cosmos_db/query.py", line 175, in run_sample
    read_item(container, item)
  File "/Users/vcimalap/Library/CloudStorage/OneDrive-Microsoft/my_code/my_test_code/k8s/smb.yaml/cosmos_db/query.py", line 55, in read_item
    request_charge = client.last_response_headers['x-ms-request-charge']
AttributeError: 'CosmosClient' object has no attribute 'last_response_headers'

您需要访问 container.client_connection而不是客户端,

request_charge = container.client_connection.last_response_headers['x-ms-request-charge']

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM