我想从Azure继承迭代器ItemPaged ItemPaged[TableEntity]到stream(Python)获取流对象。可能吗?

2024-05-20 11:55:36 发布

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

我想从Azure继承迭代器ItemPaged-ItemPaged[TableEntity]到stream(Python)获取一个stream对象。可能吗

#更新于2021年8月11日 我实现了将Azure表备份到Azure Blob-Current process to backup Azure Tables。但我想改进这个过程,我正在考虑不同的选择。我尝试从Azure表获取流,以使用create\u blob\u from\u stream


Tags: httpscorecomviewapidocsstreamazure
1条回答
网友
1楼 · 发布于 2024-05-20 11:55:36

我假设您希望从HTTP响应流式传输字节,而不是使用您接收的对象的迭代器

SDK中的每个API都支持一个关键字参数调用raw_response_hook,该调用使您能够访问HTTP响应对象,然后如果需要,允许您使用流下载API。请注意,由于有效负载被视为表示对象,因此无论发生什么情况,它都将预加载到内存中,但您仍然可以使用流语法

回调只是一个参数:

def response_callback(response):
    # Do something with the response
    requests_response = response.internal_response
    # Use "requests" API now
    for chunk in requests_response.iter_content():
        work_with_chunk(chunk)

请注意,这是相当先进的,您可能会遇到困难,这可能不符合您的确切要求。我们正在SDK上开发一种新模式,以简化类似这样的复杂场景,但尚未发布。您将能够使用send_request方法发送和接收原始请求,该方法为您提供对查询所有方面的绝对控制,例如解释您只想流式处理(内存中没有预加载)或默认情况下禁用反序列化

如果您还有其他问题或需要澄清,请随时在Azure SDK for Python repo上发布一个问题:https://github.com/Azure/azure-sdk-for-python/issues

使用新建议进行编辑:TableEntity是一个类似于dict的类,因此在使用ItemPaged<TableEntity>时可以json.dumps作为字符串,或者json.dump作为流。如果JSON转储引发异常,您可以在azure.core.serialization.AzureJSONEncoder:https://github.com/Azure/azure-sdk-for-python/blob/1ffb583d57347257159638ae5f71fa85d14c2366/sdk/core/azure-core/tests/test_serialization.py#L83中尝试我们的JSON编码器

(我在微软的Azure SDK for Python团队工作。)

参考:

相关问题 更多 >