Python与Azure blob服务
我正在尝试使用Azure blob服务将视频文件上载到云 我想知道,如果我的互联网突然出现在传输的中间,会发生什么。 当互联网消失时,似乎没有例外Python与Azure blob服务,python,azure,Python,Azure,我正在尝试使用Azure blob服务将视频文件上载到云 我想知道,如果我的互联网突然出现在传输的中间,会发生什么。 当互联网消失时,似乎没有例外 from azure.common import AzureException from azure.storage.blob import AppendBlobService, BlockBlobService, ContentSettings try: self.append_blob_service.append_bl
from azure.common import AzureException
from azure.storage.blob import AppendBlobService, BlockBlobService, ContentSettings
try:
self.append_blob_service.append_blob_from_path(self.container_name, blob_name, upload_queue.get(timeout=3))
except AzureException as ae:
print("hey i caught something") <-- this line never seem to run
来自azure.common导入AzureException
从azure.storage.blob导入AppendBlobsService、BlockBlobsService、ContentSettings
尝试:
self.append\u blob\u service.append\u blob\u from\u path(self.container\u name,blob\u name,upload\u queue.get(超时=3))
除AzureException作为ae外:
打印(“嘿,我抓到了什么”)有线性重试、指数重试、非重试和自定义重试策略
默认设置为线性,最多5次尝试间隔5秒。因此,如果您的网络连接中断<25秒,您的上传将继续
我不确定你的互联网连接是否中断了30分钟。在这种情况下,它应该抛出异常
PS:您可以在相应的C#文档中查找重试策略。Azure存储的Python SDK是开源的:
如果我们查看来自append\u blob\u from\u path()
的调用,我们可以看到以下内容:
存在默认套接字超时:
#套接字超时(秒)
默认\u套接字\u超时=20
最后,它使用了StorageClient
(AppendBlobService(BaseBlobService)->BaseBlobService(StorageClient)
)中的函数,并且StorageClient
使用:
self.retry=指数重试()。重试
指数重试
具有以下构造函数:
def\uuuuu init\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu(自我、初始回退=15、增量\u基数=3、最大尝试次数,
重试\u至\u次要=错误,随机\u抖动\u范围=3):
'''
构造一个指数重试对象。初始_退避用于
第一次重试。在初始_回退+
增加功率^重试^秒数。例如,默认情况下,第一次重试
在15秒后发生,在(15+3^1)=18秒后发生,并且
(15+3^2)之后的第三个=24秒。
:param int initial_backoff:
第一次重试的初始退避间隔(秒)。
:param int increment_base:
以秒为单位,在
第一次重试。
:param int max_尝试次数:
重试尝试的最大次数。
:param bool retry_to_secondary:
如果可以,是否应将请求重试到辅助服务器。这应该
只有使用的RA-GRS账户和可能过时的数据才能启用
可以处理。
:参数int随机抖动范围:
以秒为单位的数字,表示后退间隔的抖动/随机化范围。
例如,随机抖动范围为3会导致退避间隔x在x+3和x-3之间变化。
'''
还有一个RetryContext
,它用于决定是否需要重试
如果在代码中启用,您将看到所有重试:
#基本配置:配置根记录器,包括“azure.storage”
logging.basicConfig(格式='%(asctime)s%(名称)-20s%(levelname)-5s%(消息)s',level=logging.INFO)
继续:
您有(20秒的套接字超时+从15秒开始的动态间隔,每次尝试随机递增)和3次尝试。当您启用信息级别日志记录时,您可以看到到底发生了什么