programing

AzureBob 업로드 오류: 지정한 BLOB가 이미 있습니다.

padding 2023. 5. 28. 20:25
반응형

AzureBob 업로드 오류: 지정한 BLOB가 이미 있습니다.

저는 매일 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

Blob 스토리지 클라이언트 라이브러리 v12를 사용하여 기존 BLOB를 덮어쓰려면 overwrite=만 추가하면 됩니다. 참입니다.upload_blob방법.

다음은 샘플 코드입니다.

from azure.storage.blob import BlobServiceClient, BlobClient, ContainerClient

conn_str = "xxx"
container_name = "test6"

blob_service_client = BlobServiceClient.from_connection_string(conn_str=conn_str)
blob_client = blob_service_client.get_blob_client(container=container_name,blob="a1.txt")

with open("F:\\temp\\a1.txt","rb") as data:
    blob_client.upload_blob(data,overwrite=True)

print("**completed**")

코드를 실행한 후, 새로운 블롭이 업로드되고 기존 블롭을 덮어쓸 수 있습니다.아래 스크린샷:

여기에 이미지 설명 입력

알려진 문제에 대한 이 블로그 게시물을 확인하십시오.

이는 개발 스토리지와 관련된 알려진 문제입니다.이 문제는 블록을 업로드하기 위해 시작된 스레드가 여러 개 있을 때 발생합니다(블롭을 구성함).기본적으로 개발 스토리지는 SQL 서버를 데이터 저장소로 사용합니다.이제 첫 번째로 하는 일은 표에 블롭 정보를 저장하는 항목을 만드는 것입니다.여러 개의 스레드가 작동하는 경우 모든 스레드가 동일한 작업을 수행하려고 시도합니다.첫 번째 스레드가 성공하면 후속 스레드에서 이 예외가 발생합니다.

언급URL : https://stackoverflow.com/questions/59132689/azureblob-upload-errorthe-specified-blob-already-exists

반응형