• ログイン今すぐ開始

本書は、お客様のご参考のために原文の英語版を機械翻訳したものです。

英語版と齟齬がある場合、英語版の定めが優先するものとします。より詳しい情報については、本リンクをご参照ください。

問題を作成する

create_distributed_trace_payload (PythonエージェントAPI)

構文

newrelic.agent.create_distributed_trace_payload()

この方法は、分散型トレース内のトランザクションを接続するためのペイロードを生成するために使用されます。

要件

Pythonエージェントのバージョン4.2.0.100以上。

注意

このAPIは廃止されました。代わりに newrelic.agent.insert_distributed_trace_headers をご利用ください。

Distributed Tracingが有効であること .

説明

このAPIは、 分散型トレースが有効になっている必要があります

このコールとそのパートナーコールの使用方法については、 accept_distributed_trace_payloadEnable distributed tracing with agent APIs を参照してください。

この呼び出しは、分散型トレーシングを実装するために使用されます。このコールはペイロードを生成し、受信側のアプリケーションが accept_distributed_trace_payload メソッドで読み込みます。

戻り値

成功すると、 DistributedTracePayload オブジェクトを返します。このオブジェクトは、Pythonの組み込み dict タイプを継承し、以下の追加メソッドを持っています。

  • テキスト: ペイロードのJSONエンコードされた文字列バージョンを生成します。
  • http_safe: ペイロードのbase64エンコードされた文字列バージョンを生成します。

失敗した場合は、 None を返します。これは、分散型トレーシングが有効になっていない場合や、アクティブなトランザクションの外から呼び出された場合に起こります。

重要

トレース内のスパンの適切な順序を維持するためには、ペイロードを送信するスパンのコンテキストでペイロードを生成する必要があります。

バックグラウンドタスク内での分散型トレースペイロードの作成

create_distributed_trace_payload を使用して、単一のバックグラウンドタスク内から2つの 外部トレース を作成した例です。

@newrelic.agent.background_task()
def main(url):
header_key = newrelic.agent.ExternalTrace.cat_distributed_trace_key
with newrelic.agent.ExternalTrace('my_external_library',
url, method='GET'):
# Generate the payload in the context of the ExternalTrace
# span that sends it
payload = newrelic.agent.create_distributed_trace_payload()
headers = {header_key: payload.http_safe()}
response = my_external_library._get(url, headers=headers)
data = _process_response(response)
with newrelic.agent.ExternalTrace('my_external_library',
url, method='POST'):
# Generate the payload in the context of the ExternalTrace
# span that sends it
payload = newrelic.agent.create_distributed_trace_payload()
headers = {header_key: payload.http_safe()}
response = my_external_library._post(url, data=data, headers=headers)

外部トレースの中に分散型トレースペイロードを作成する

create_distributed_trace_payload外部トレースの作成に使用した例

def _bind_url(url, *args, **kwargs):
# _bind_url is called with the args and kwargs sent to the `get`
# method below
return url
@newrelic.agent.external_trace('my_external_library', _bind_url, method='GET')
def get(url):
payload = newrelic.agent.create_distributed_trace_payload()
header_key = newrelic.agent.ExternalTrace.cat_distributed_trace_key
headers = {header_key: payload.http_safe()}
return my_external_library._get(url, headers=headers)
Copyright © 2022 New Relic株式会社。

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.