Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/301.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python与Azure blob服务_Python_Azure - Fatal编程技术网

Python与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

我正在尝试使用Azure blob服务将视频文件上载到云

我想知道,如果我的互联网突然出现在传输的中间,会发生什么。

当互联网消失时,似乎没有例外

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次尝试。当您启用信息级别日志记录时,您可以看到到底发生了什么