통사론
newrelic.agent.accept_distributed_trace_payload(payload, transport_type='HTTP')
이 방법은 분산 추적 내에서 트랜잭션을 연결하는 데 사용되는 페이로드를 수락하는 데 사용됩니다.
요구 사항
Python 에이전트 버전 4.2.0.100 이상.
주의
이 API는 더 이상 사용되지 않습니다. 대신 newrelic.agent.accept_distributed_trace_headers를 사용하세요.
분산 추적을 활성화 해야 합니다.
설명
이 호출을 사용하는 방법에 대한 컨텍스트를 보려면 먼저 파트너 API 호출 create_distributed_trace_payload
및 에이전트 API로 분산 추적 사용을 읽으십시오.
이 호출은 create_distributed_trace_payload
에 의해 생성된 분산 추적 페이로드를 구문 분석하여 트랜잭션을 연결하는 데 사용됩니다.
매개변수
매개변수 | 설명 |
---|---|
사전 또는 문자열 | 필수의. 수락할 페이로드입니다. |
끈 | 선택사항, 기본값은 |
반환 값
성공하면 True
을 반환합니다.
실패하면 False
을 반환합니다. 페이로드 수락은 다음과 같은 몇 가지 이유로 실패할 수 있습니다.
- 현재 거래가 활성화되어 있지 않습니다.
- Accept가 트랜잭션 범위 밖에서 호출되었습니다.
- 페이로드가 비어 있습니다.
- 분산 추적을 사용할 수 없습니다.
accept_distributed_trace_payload
이전이 아니라create_distributed_trace_payload
이후에 호출되었습니다.accept_distributed_trace_payload
단일 트랜잭션에서 여러 번 호출되었습니다.- 페이로드를 구문 분석할 수 없습니다.
- 페이로드가 신뢰할 수 없는 계정에서 전송되었습니다.
예
백그라운드 작업 내 분산 추적 페이로드 수락
백그라운드 작업에서 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)