python - 我想从 Azure 继承迭代器 ItemPaged - ItemPaged[TableEntity] 获取流对象到 Stream (Python)。是否可以?

标签 python azure azure-sdk-python

我想从 Azure 继承迭代器 ItemPaged - ItemPaged[TableEntity] 获取流对象以进行流处理 (Python)。可能吗?

#更新于2021年8月11日 我意识到将 Azure 表备份到 Azure Blob - Current process to backup Azure Tables 。但我想改进这个过程,并且正在考虑不同的选择。我尝试从 Azure 表获取流以使用 create_blob_from_stream

最佳答案

我假设您想要从 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 存储库上提出问题:https://github.com/Azure/azure-sdk-for-python/issues

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

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

引用:

关于python - 我想从 Azure 继承迭代器 ItemPaged - ItemPaged[TableEntity] 获取流对象到 Stream (Python)。是否可以?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68712323/

相关文章:

python - 如何将一个 numpy 数组切片为另一个不同大小的 numpy 数组?

AzureML 链接到 Blob 存储

Azure:无法将存档 blob 从一个存储帐户复制到另一个存储帐户?

python - 如何在列出所有 VM 时使用 Azure Python SDK 中的 nextLink 属性

python - Azure python SDK - 从资源组中删除或取消分配虚拟机

python - 从命令行获取数字列表并打印最大的数字

python - celery 中的导入错误

python - 将数据写入 xml 文件时出现 UnicodeEncodeError

c# - 升级到SDK 2.3.301后,Service Fabric Actor或服务将变得无法访问

c# - 从 Azure 应用程序读取 Office Excel 文件