1

私は次のコードを使用してAzureブロブストレージから大VHDファイル(30ギガバイト)をダウンロードしようとしています:AzureのPythonのSDK - AzureHttpErrorは:条件が満たされていないHTTPの条件付きヘッダー(複数可)を使用して、指定さ

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

ここで、最初のパラメータはコンテナ名、2番目はブロブ名、3番目は保存先のローカルファイル/パスです。この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

ダウンロードは現在、いくつかのランダムな時間のために[OK]を実行します。最大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がアイドルであっても、 - 実行中のOSは決して本当にアイドル状態ではありません - 常にいくつかのバックグラウンド操作があり、ディスクに書き込む可能性があります。

コピーが正常に行われることは保証されませんが、コピーを開始する前にVMをシャットダウンする必要があります。

また、VHDのスナップショットを作成して元のvhdではなくスナップショットでコピーを実行することもできます(コピー操作中に引き続きvhdを使用できるようになります)。

0

sas_tokenを使用してblobサービスを作成する場合は、1時間だけ持続するように設定されていることがあります。その場合、作成時のトークンの有効期限を後の時点に変更することができます。

関連する問題