통사론
newrelic.agent.background_task(application=None, name=None, group=None)
백그라운드 작업 또는 기타 웹이 아닌 트랜잭션을 계측하는 데 사용됩니다.
설명
이 Python 데코레이터는 백그라운드 작업 또는 기타 웹이 아닌 트랜잭션 을 계측하는 데 사용할 수 있습니다. 이것은 일반적으로 작업자 프로세스, 작업 기반 시스템 및 독립 실행형 스크립트와 같은 웹이 아닌 활동을 계측하는 데 사용됩니다. 백그라운드 작업으로 표시된 트랜잭션은 APM UI에서 웹이 아닌 트랜잭션으로 표시되며 웹 트랜잭션과 구분됩니다.
중요
함수가 아직 계측되지 않은 경우 function_trace()
사용하여 백그라운드 작업 내에서 해당 함수에 대한 함수 추적을 만들 수 있습니다. 또는 구성 파일을 사용하여 계측되지 않은 기능을 계측할 수 있습니다.
백그라운드 작업 데코레이터를 사용하는 함수가 웹 트랜잭션 컨텍스트 내에서 호출되면 웹 트랜잭션은 백그라운드 작업으로 표시됩니다. 소요 시간 측정은 원래 웹 트랜잭션이 시작될 때 시작됩니다.
데코레이터를 사용할 수 없는 경우 다음 호출 형식 중 하나가 더 유용할 수 있습니다.
- 컨텍스트 관리자 : 모니터링할 작업이 런타임에만 결정되고 가져오기 시간에는 결정되지 않는 경우
BackgroundTask
컨텍스트 관리자를 사용하여 코드 블록 실행을 직접 래핑할 수 있습니다. (이것은BackgroundTaskWrapper
에서 사용하는 컨텍스트 관리자입니다.) - 래퍼 : 추적하려는 특정 기능이 어디에 있는지 미리 알고 있으면
background_task
데코레이터를 사용할 수 있습니다. 그러나 추적해야 하는 모든 함수를 모르는 경우(예: 라우팅 시스템의 일부로 동적으로 조회되는 경우)BackgroundTaskWrapper
을 사용하여 해당 시간에 함수를 래핑해야 합니다. 등록 시 또는 호출 시. - 경로 기반 래퍼 : 경로 기반 래퍼 형식은
wrap_background_task
입니다.
이러한 함수 형식의 차이점과 사용에 대한 자세한 내용은 변수 호출 형식 을 참조하세요.
매개변수
데코레이터 및 컨텍스트 관리자 매개변수
newrelic.agent.background_task(application=None, name=None, group=None)
newrelic.agent.BackgroundTask(application=None, name=None, group=None)
이러한 호출에 대한 매개변수:
매개변수 | 설명 |
---|---|
애플리케이션 인스턴스 | 필수의. 데이터가 보고되는 응용 프로그램입니다. 기본값은 애플리케이션 객체 생성에 대한 자세한 내용은 애플리케이션이 지정되더라도 요청 환경 사전당 WSGI 애플리케이션에 |
끈 | 필수의. 트랜잭션의 이름입니다. 기본값은 |
끈 | 선택 과목. 제공되지 않은 경우 그룹은 이름이 |
래퍼 매개변수:
newrelic.agent.BackgroundTaskWrapper(wrapped, application=None, name=None, group=None)
BackgroundTaskWrapper
background_task
데코레이터 및 이 추가 wrapped
매개변수와 동일한 매개변수 를 사용합니다.
매개변수 | 설명 |
---|---|
방법 | 필수의. 추적할 방법입니다. |
경로 기반 매개변수:
newrelic.agent.wrap_background_task(module, object_path, application=None, name=None, group=None)
wrap_background_task
background_task
데코레이터와 동일한 매개변수 와 다음 추가 매개변수를 사용합니다.
매개변수 | 설명 |
---|---|
모듈 또는 문자열 | 필수의. 계측 중인 웹이 아닌 기능/활동이 포함된 모듈입니다. |
끈 | 필수의. 모듈의 경로입니다. |
예
background_task
데코레이터 예제
다음은 background_task
데코레이터를 사용하는 예입니다.
@newrelic.agent.background_task()def task(): ...
BackgroundTask
컨텍스트 관리자 예제
BackgroundTask
사용 예:
application = newrelic.agent.application()name = newrelic.agent.callable_name(task)
with BackgroundTask(application, name): task()
다음은 매개변수가 더 많은 또 다른 예입니다.
application = newrelic.agent.register_application(timeout=10.0)
def execute_task(task_name): with newrelic.agent.BackgroundTask(application, name=task_name, group='Task'): ...
BackgroundTaskWrapper
예시
BackgroundTaskWrapper
사용 예:
task = newrelic.agent.BackgroundTaskWrapper(get_next_task())result = task(*args, **kwargs)
이 예에서 에이전트가 모니터링하는 웹 트랜잭션에서 이 호출이 이루어진 경우 호출은 웹 트랜잭션을 백그라운드 작업으로 재분류합니다. 그러나 호출이 백그라운드 스레드 또는 코루틴에서 이루어진 경우 호출이 반환될 때까지 발생하는 것을 추적하는 새로운 백그라운드 작업 트랜잭션의 기록을 시작합니다.