我每天尝试将文件上传到Azure容器。
我上载具有相同文件的文件时出现错误:“指定的blob已存在”(我想覆盖该文件)
from azure.storage.blob import BlobServiceClient, BlobClient, ContainerClient
conn_str = yml['AZURE_BLOB']['CONN_STR']
container_name = yml['AZURE_BLOB']['CONTAINER_NAME']
# Create the BlobServiceClient that is used to call the Blob service for the storage account
blob_service_client = BlobServiceClient.from_connection_string(conn_str=conn_str)
# Create a blob client using the local file name as the name for the blob
blob_client = blob_service_client.get_blob_client(container=container_name, blob=destination_file_name)
# Upload the created file
data = fs.open(source_path,mode='rb').read()
blob_client.upload_blob(data)
print(destination_file_name+'\t......[DONE]')
错误消息:
azure.core.exceptions.ResourceExistsError: The specified blob already exists.
RequestId:13d062cd-801e-00a4-77c7-a81c56000000
Time:2019-12-02T04:18:06.0826908Z
ErrorCode:BlobAlreadyExists
Error:None
查看有关a known issue的博客文章。
这是开发存储的已知问题。当启动了多个线程以上传块(构成Blob)时,就会发生这种情况。基本上发生的事情是,开发存储将SQL Server用作数据存储。现在,它要做的第一件事是在存储斑点信息的表中创建一个条目。如果有多个线程在工作,那么所有这些线程都将尝试执行相同的操作。在第一个线程成功执行之后,后续线程将导致引发此异常。