コンテンツにスキップ

Taegis SDK for Python のミドルウェア🔗

Taegis SDK for Python は、トランスポートとしてAIOHTTPを使用しています。すべてのHTTPコールに対してミドルウェアを挿入できます。ミドルウェアは、開始時のWebsocketsリクエストにはラップされますが、メッセージにはラップされません。

ミドルウェアは、APIコールにデフォルトで割り当てることも、コンテキストマネージャで上書きすることもできます。ミドルウェアを上書きすると、ミドルウェアのフロー全体が置き換えられます。

from taegis_sdk_python import GraphQLService
from taegis_sdk_python.middlewares import retry_middleware, headers_logging_middleware

# Assign defaults
service = GraphQLService(middlewares=(retry_middleware,))

# Override
with service(middlewares=(headers_logging_middleware, retry_middleware)):
     results = service.subjects.query.current_subject()

🔗

Taegis SDK for Python には、headers_logging_middlewareretry_middleware の2つのミドルウェア例が用意されています。

headers_logging_middleware は、リクエストおよびレスポンスヘッダーをデバッグログレベルで記録します。SDKによってキャッシュされたアクセストークンは、<redacted> という文字列に置き換えられます。

retry_middleware は、REQUEST_TIMEOUT (408)、INTERNAL_SERVER_ERROR (500)、BAD_GATEWAY (502)、SERVICE_UNAVAILABLE (503)、GATEWAY_TIMEOUT (504) に対して指数バックオフでリトライを行います。TOO_MANY_REQUESTS (429) が発生した場合は、"Retry-After" ヘッダーの値がバックオフタイマーとして使用されます。

SDKは、あきらめるまでの最大秒数またはコール回数を設定できます。デフォルトは10秒で、コール回数の上限はありません。

from taegis_sdk_python.config import write_to_config

write_to_config("backoff.retry", "max_time", 60)  # specifies the maximum amount of total time in seconds that can elapse before giving up
write_to_config("backoff.retry", "max_tries", 5)  # specifies the maximum number of calls to make to the target function before giving up

追加リソース🔗