Python 用 Azure Core 共有クライアント ライブラリ - バージョン 1.29.6

Azure Core には、Python SDK クライアント ライブラリ用の共有例外とモジュールが用意されています。 これらのライブラリは、 Azure SDK Design Guidelines for Python に従います。

クライアント ライブラリ開発者の場合は、 詳細については、クライアント ライブラリ開発者向けリファレンスを参照 してください。

ソースコード | パッケージ (Pypi) | パッケージ (Conda) | API リファレンス ドキュメント

免責事項

Python 2.7 の Azure SDK Python パッケージのサポートは、2022 年 1 月 1 日に終了しました。 詳細と質問については、https://github.com/Azure/azure-sdk-for-python/issues/20691 を参照してください

作業の開始

通常、Azure Core をインストールする必要はありません。これは、それを使用してクライアント ライブラリのいずれかをインストールするときにインストールされます。 (たとえば、独自のクライアント ライブラリを実装するために) 明示的にインストールする場合は、 こちらを参照してください

主要な概念

Azure Core ライブラリの例外

AzureError

AzureError は、すべてのエラーの基本例外です。

class AzureError(Exception):
    def __init__(self, message, *args, **kwargs):
        self.inner_exception = kwargs.get("error")
        self.exc_type, self.exc_value, self.exc_traceback = sys.exc_info()
        self.exc_type = self.exc_type.__name__ if self.exc_type else type(self.inner_exception)
        self.exc_msg = "{}, {}: {}".format(message, self.exc_type, self.exc_value)  # type: ignore
        self.message = str(message)
        self.continuation_token = kwargs.get("continuation_token")
        super(AzureError, self).__init__(self.message, *args)

message は、例外に関連付けられる任意のメッセージ (str) です。

args は、例外で含める追加の引数です。

kwargs は、例外と共に含める引数キーワード (keyword)です。 キーワード (keyword) エラーを使用して内部例外を渡し、トークン参照のcontinuation_tokenして不完全な操作を続行します。

次の例外は AzureError から継承されます。

ServiceRequestError

サービスへの要求の試行中にエラーが発生しました。 要求は送信されませんでした。

ServiceResponseError

要求は送信されましたが、クライアントは応答を理解できませんでした。 接続がタイムアウトしている可能性があります。これらのエラーは、べき等操作または安全な操作に対して再試行できます。

HttpResponseError

要求が行われ、サービスから成功していない状態コードが受信されました。

class HttpResponseError(AzureError):
    def __init__(self, message=None, response=None, **kwargs):
        self.reason = None
        self.response = response
        if response:
            self.reason = response.reason
            self.status_code = response.status_code
        self.error = self._parse_odata_body(ODataV4Format, response)  # type: Optional[ODataV4Format]
        if self.error:
            message = str(self.error)
        else:
            message = message or "Operation returned an invalid status '{}'".format(
                self.reason
            )

        super(HttpResponseError, self).__init__(message=message, **kwargs)

message は HTTP 応答エラー メッセージです (省略可能)

response は HTTP 応答です (省略可能)。

kwargs は、例外と共に含める引数キーワード (keyword)です。

次の例外は HttpResponseError から継承されます。

DecodeError

応答のシリアル化解除中に発生したエラー。

IncompleteReadError

完全なメッセージ本文を受信する前にピアが接続を閉じると、エラーが発生します。

ResourceExistsError

状態コード 4xx を含むエラー応答。 これは、Azure コア パイプラインによって直接発生しません。

ResourceNotFoundError

エラー応答。通常、412 応答 (更新の場合) または 404 (get/post の場合) によってトリガーされます。

ResourceModifiedError

状態コード 4xx (通常は 412 競合) を含むエラー応答。 これは、Azure コア パイプラインによって直接発生しません。

ResourceNotModifiedError

状態コード 304 のエラー応答。 これは、Azure コア パイプラインによって直接発生しません。

ClientAuthenticationError

状態コード 4xx を含むエラー応答。 これは、Azure コア パイプラインによって直接発生しません。

TooManyRedirectsError

リダイレクト試行の最大数に達したときに発生するエラー。 リダイレクトの最大量は、RedirectPolicy で構成できます。

class TooManyRedirectsError(HttpResponseError):
    def __init__(self, history, *args, **kwargs):
        self.history = history
        message = "Reached maximum redirect attempts."
        super(TooManyRedirectsError, self).__init__(message, *args, **kwargs)

history は、リダイレクトされた要求が発生した要求/応答を文書化するために使用されます。

args は、例外で含める追加の引数です。

kwargs は、例外と共に含める引数キーワード (keyword)です。

StreamConsumedError

のストリームにアクセスしようとした場合、またはazure.core.rest.AsyncHttpResponse応答ストリームazure.core.rest.HttpResponseが使用されると、エラーがスローされます。

StreamClosedError

のストリームにアクセスしようとすると、またはazure.core.rest.AsyncHttpResponse応答ストリームazure.core.rest.HttpResponseが閉じられた後にエラーがスローされます。

ResponseNotReadError

応答のバイトを最初に読み取る前に または azure.core.rest.AsyncHttpResponse にアクセスcontentazure.core.rest.HttpResponseしようとすると、エラーがスローされます。

構成

メソッドを呼び出すときは、 を kwargs 引数として渡すことで、一部のプロパティを構成できます。

パラメーター 説明
headers HTTP 要求ヘッダー。
request_id ヘッダーに追加する要求 ID。
user_agent 指定した場合、これはユーザー エージェント文字列の前に追加されます。
logging_enable 操作ごとにを有効にするには、 を使用します。 既定値は False です。
logger 指定した場合は、情報をログに記録するために使用されます。
response_encoding このサービスで既知の場合に使用するエンコード (自動検出は無効になります)。
proxies プロトコルまたはプロトコルとホスト名をプロキシの URL にマップします。
raw_request_hook コールバック関数。 要求時に呼び出されます。
raw_response_hook コールバック関数。 応答時に呼び出されます。
network_span_namer スパン名をカスタマイズするための呼び出し可能。
tracing_attributes 作成されたすべてのスパンに設定する属性。
permit_redirects クライアントがリダイレクトを許可するかどうか。 既定値は True です。
redirect_max 許可されるリダイレクトの最大数。 既定値は 30 です。
retry_total 許可する再試行の合計数。 他のカウントよりも優先されます。 既定値は 10 です。
retry_connect 再試行する接続関連エラーの数。 これらは、要求がリモート サーバーに送信される前に発生するエラーです。これは、要求を処理するためにサーバーがトリガーされていないと想定しています。 既定値は 3 です。
retry_read 読み取りエラーで再試行する回数。 これらのエラーは、要求がサーバーに送信された後に発生するため、要求に副作用が生じる可能性があります。 既定値は 3 です。
retry_status 無効な状態コードで再試行する回数。 既定値は 3 です。
retry_backoff_factor 2 回目の試行後の試行間に適用するバックオフ係数 (ほとんどのエラーは、遅延なしで 2 回目の試行によってすぐに解決されます)。 再試行ポリシーは次の時間スリープ状態になります: {backoff factor} * (2 ** ({number of total retries} - 1)) 秒。 backoff_factorが 0.1 の場合、再試行の間に [0.0s,0.2s, 0.4s, ...] がスリープ状態になります。 既定値は 0.8 です。
retry_backoff_max 最大バックオフ時間。 既定値は 120 秒 (2 分) です。
retry_mode 試行間の遅延を修正または指数関数的に設定します。既定値は です Exponential
timeout 操作のタイムアウト設定 (秒単位)、既定値は 604800s (7 日) です。
connection_timeout 接続タイムアウトの 1 つの float (秒単位)。 既定値は 300 秒です。
read_timeout 読み取りタイムアウトの 1 つの float (秒単位)。 既定値は 300 秒です。
connection_verify SSL 証明書の検証。 既定で有効です。 無効にするには False に設定します。または、信頼された CA の証明書を含むCA_BUNDLE ファイルまたはディレクトリへのパスに設定することもできます。
connection_cert クライアント側の証明書。 クライアント側証明書として、1 つのファイル (秘密キーと証明書を含む) として、または両方のファイルのパスのタプルとして使用するローカル証明書を指定できます。
proxies プロキシの URL へのプロトコルまたはプロトコルとホスト名のディクショナリ マッピング。
Cookie と共 Requestに送信する Dict オブジェクトまたは CookieJar オブジェクト。
connection_data_block_size 接続経由で送信されるデータのブロック サイズ。 既定値は 4096 バイトです。

非同期トランスポート

非同期トランスポートはオプトインするように設計されています。 AioHttp は、非同期トランスポートのサポートされている実装の 1 つです。 既定ではインストールされません。 個別にインストールする必要があります。

共有モジュール

MatchConditions

MatchConditions は、一致条件を記述する列挙型です。

class MatchConditions(Enum):
    Unconditionally = 1  # Matches any condition
    IfNotModified = 2  # If the target object is not modified. Usually it maps to etag=<specific etag>
    IfModified = 3  # Only if the target object is modified. Usually it maps to etag!=<specific etag>
    IfPresent = 4   # If the target object exists. Usually it maps to etag='*'
    IfMissing = 5   # If the target object does not exist. Usually it maps to etag!='*'

CaseInsensitiveEnumMeta

大文字と小文字を区別しない列挙型をサポートするメタクラス。

from enum import Enum

from azure.core import CaseInsensitiveEnumMeta

class MyCustomEnum(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    FOO = 'foo'
    BAR = 'bar'

Null Sentinel 値

データのない属性を指定するために使用されるはずの、不正な sentinel オブジェクト。 これは、ネットワーク上で に null シリアル化されます。

from azure.core.serialization import NULL

assert bool(NULL) is False

foo = Foo(
    attr=NULL
)

共同作成

このプロジェクトでは、共同作成と提案を歓迎しています。 ほとんどの共同作成では、共同作成者使用許諾契約書 (CLA) にご同意いただき、ご自身の共同作成内容を使用する権利を Microsoft に供与する権利をお持ちであり、かつ実際に供与することを宣言していただく必要があります。 詳細については、 https://cla.microsoft.com を参照してください。

pull request を送信すると、CLA を提供して PR (ラベル、コメントなど) を適宜装飾する必要があるかどうかを CLA ボットが自動的に決定します。 ボットによって提供される手順にそのまま従ってください。 この操作は、Microsoft の CLA を使用するすべてのリポジトリについて、1 回だけ行う必要があります。

このプロジェクトでは、Microsoft オープン ソースの倫理規定を採用しています。 詳細については、倫理規定についてよくあるご質問を参照するか、opencode@microsoft.com 宛てにご質問またはコメントをお送りください。