構文
newrelic.agent.accept_distributed_trace_payload(payload, transport_type='HTTP')
この方法は、分散型トレース内のトランザクションを接続するために使用されるペイロードを受け入れるために使用されます。
要件
Pythonエージェントのバージョン4.2.0.100以上。
注意
このAPIは廃止されました。代わりに newrelic.agent.accept_distributed_trace_headers をご利用ください。
Distributed Tracingが有効であること .
説明
このコールの使用方法については、まずそのパートナーAPIコールをお読みください create_distributed_trace_payload
and Enable distributed tracing with agent APIs.
この呼び出しは、 create_distributed_trace_payload
によって生成された分散トレースペイロードを解析して、トランザクションをリンクするために使用されます。
パラメータ
パラメーター | 説明 |
---|---|
辞書または文字列 | 必須。受け入れるべきペイロードです。 |
トランスポートタイプ | オプション、デフォルトは |
戻り値
成功すると、 真
を返します。
失敗した場合は、 False
を返します。ペイロードの受け入れに失敗する理由はいくつかあります。
- 現在のトランザクションは有効ではありません。
- Acceptがトランザクションの範囲外で呼び出された。
- ペイロードは空です。
- Distributed Tracing is not enabled.
accept_distributed_trace_payload
は、create_distributed_trace_payload
の後に呼び出されたのであって、その前に呼び出されたのではない。accept_distributed_trace_payload
が1つのトランザクションで複数回呼び出されました。- ペイロードを解析できませんでした。
- ペイロードは、信頼できないアカウントから送信されたものです。
例
バックグラウンドタスク内での分散型トレースペイロードの受け入れ
accept_distributed_trace_payload
をバックグラウンドタスクで使用した例です。
@newrelic.agent.background_task()def handle(request): payload = request.headers.get('newrelic') if payload: newrelic.agent.accept_distributed_trace_payload(payload)
_do_some_work()
キューからの消費
accept_distributed_trace_payload
を使用し、各メッセージに対して バックグラウンドタスク を作成した例です。
import newrelic.agentnewrelic.agent.initialize('newrelic.ini')application = newrelic.agent.register_application(timeout=10.0)
def main(queue): for message in queue.consume(): with newrelic.agent.BackgroundTask(application, 'Queue Consume'): payload = message.headers.get('newrelic') newrelic.agent.accept_distributed_trace_payload(payload, transport_type='Queue') _process_message(message)