如何解决Azure Storage Blob (v12) Python API:获取租约时重试
我将 Python API 用于 Azure Storage v12.x (doc)。我正在尝试使用以下代码获取 blob 的租约:
credentials = ...
blob_client = BlobClient(account_url=ACCOUNT_URL,container_name=CONTAINER_NAME,blob_name=BLOB_NAME,credential=credentials)
lease_id_str = str(uuid.uuid4())
lease = blob_client.acquire_lease(lease_duration=60,lease_id=lease_id_str)
现在,如果租约不可用,我想重试。问题是“我应该如何通过重试获得租约?”
以下是我尝试过的几件事:
1.This documentation 讨论属性 retry_connect
、retry_read
、retry_status
。将这些作为附加参数添加到上述代码没有帮助。
2.Following this test case,我尝试了以下操作:
from azure.storage.blob import ExponentialRetry
retry = ExponentialRetry(initial_backoff=1,increment_base=3,retry_total=3)
lease = BlobLeaseClient(blob_client,lease_id=lease_id_str,retry_policy=retry)
它返回以下内容:
TypeError: init() 得到了一个意外的关键字参数“retry_policy”
解决方法
我相信您收到此错误的原因是您试图将不受支持的 retry_policy
参数传递给 BlobLeaseClient
。
如果您查看您共享的测试用例链接代码,则会将重试策略传递给 BlobServiceClient
对象。你可以尝试使用它吗?类似的东西:
retry = ExponentialRetry(initial_backoff=1,increment_base=3,retry_total=3)
blob_service_client = BlobServiceClient(account_url=ACCOUNT_URL,credential=credentials,retry_policy=retry)
blob_client = blob_service_client.get_blob_client(container=CONTAINER_NAME,blob=BLOB_NAME)
lease = BlobLeaseClient(blob_client,lease_id=lease_id_str)
或者尝试以下类似的方法。此处,在创建 BlobClient
的实例时传递重试策略。
credentials = ...
retry = ExponentialRetry(initial_backoff=1,retry_total=3)
blob_client = BlobClient(account_url=ACCOUNT_URL,container_name=CONTAINER_NAME,blob_name=BLOB_NAME,retry_policy=retry)
lease = BlobLeaseClient(blob_client,lease_id=lease_id_str)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。