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
にアクセスcontent
azure.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 | 操作のタイムアウト設定 (秒単位)、既定値は 604800 s (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 宛てにご質問またはコメントをお送りください。
Azure SDK for Python