• English日本語한국어
  • ログイン今すぐ開始

この機械翻訳は参考用に提供されます。

英語版と翻訳版に矛盾がある場合は、英語版が優先されます。詳細については、 を参照してください。

問題を作成する

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_payloadの使用方法については、 「エージェント API で分散トレースを有効にする」を参照してください。

この呼び出しは、分散トレースを実装するために使用されます。これは、受信アプリケーションによって accept_distributed_trace_payload メソッドを使用して読み取られるペイロードを生成します。

戻り値

成功すると、Python の組み込み dict 型を継承し、次の追加メソッドを持つ DistributedTracePayload オブジェクトが返されます。

  • text: ペイロードの JSON エンコード文字列バージョンを生成します。
  • http_safe: ペイロードの Base64 エンコード文字列バージョンを生成します。

失敗した場合は Noneを返します。これは、分散トレースが有効になっていない場合、またはアクティブなトランザクションの外部から呼び出された場合に発生する可能性があります。

重要

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

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

1 つのバックグラウンド タスク内から 2 つの 外部トレース を作成する際の create_distributed_trace_payload の使用例:

@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 © 2023 New Relic Inc.

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