1

나는 다음과 같은 코드를 사용하여 푸른 물방울 저장에서 큰 VHD 파일 (30기가바이트)을 다운로드하기 위해 노력하고있어 :푸른 파이썬 SDK - AzureHttpError은 : 조건이 충족되지 않은 HTTP 조건 헤더 (들)을 사용하여 지정

blob_service.get_blob_to_path('vhds', '20161206092429.vhd', '20161206092429.vhd') 

첫 번째 매개 변수는 컨테이너 이름이고 두 번째 매개 변수는 blob 이름이며 세 번째 매개 변수는 저장 될 로컬 파일/경로입니다. 이 30 기가 바이트 다운로드가 정상적으로 작동했지만, 갑자기이 오류 받기 시작 :

AzureHttpError: The condition specified using HTTP conditional header(s) is not met. ConditionNotMet The condition specified using HTTP conditional header(s) is not met. RequestId:88b6ac24-0001-0001-5ec0-4f490d000000 Time:2016-12-06T12:57:13.5389237Z

다운로드 지금 어떤 임의의 시간에 대한 확인을 실행 : 때때로 정말 짧은 시간, 때로는 시간이 오래. 최대 30GB의 다운로드도 9 또는 10GB까지 가능합니다. 이 질문에 따르면

:

Azure Blob: "The condition specified using HTTP conditional header(s) is not met"

304: The condition specified using HTTP conditional header(s) is not met

경쟁 조건 것 같다,하지만이 다이빙없이 문제를 해결하고 SDK를 다루는 많은 도움이되지 않습니다 암호. 다운로드가 이전에 작동 했으므로 발생 원인에 대한 제안 사항이 있습니까? 아마 Azure 구름에 대한 정전?

+0

이것은 정전과 관련이 없습니다. 그냥 궁금해서 -이 vhd를 적극적으로 사용하고 있습니까 (예 : 현재 실행중인 VM의 디스크로 사용되는 것입니까?). –

+0

vhd가 연결된 VM이 실행 중입니다. 그러나 아무도 그것에 로그인되어 있지 않습니다. VM을 끄면이 문제가 해결 될 것이라고 생각하십니까? –

답변

2

VHD가 변경되면 관련 ETag가 변경됩니다. 이런 일이 발생하면 파일 복사 작업이 더 이상 유효하지 않습니다. 나는 당신의 전화가 blob_service.get_blob_to_path()으로 전화를 통해보고있는 것이라고 믿습니다. 귀하의 VHD가 실행중인 VM과 함께 사용되고 있기 때문입니다. 그리고 ... VM이 유휴 인 경우에도 - 실행중인 운영 체제는 실제로 유휴 상태가 아닙니다. 항상 백그라운드 작업이있어 ​​디스크에 쓸 수 있습니다.

파일 복사 작업을 성공적으로 수행 할 수는 없지만 복사를 시작하기 전에 먼저 VM을 종료해야합니다.

또는 VHD의 스냅 숏을 만든 다음 원래 vhd 대신 스냅 숏을 통해 복사본을 만들 수 있습니다. 그러면 복사 작업 중에 vhd를 계속 사용할 수 있습니다.

0

sas_token을 사용하여 blob 서비스를 만드는 경우 1 시간 동안 만 지속되도록 설정할 수 있습니다. 이 경우 나중에 생성 할 토큰의 만료 시간을 나중에 변경할 수 있습니다.