• EnglishEspañol日本語한국어Português
  • 로그인지금 시작하기

이 한글 문서는 사용자의 편의를 위해 기계 번역되었습니다.

영문본과 번역본이 일치하지 않는 경우 영문본이 우선합니다. 보다 자세한 내용은 이 페이지를 방문하시기 바랍니다.

문제 신고

background_task(파이썬 에이전트 API)

통사론

newrelic.agent.background_task(application=None, name=None, group=None)

백그라운드 작업이나 유한 런타임의 기타 SSL을 제거하는 데 사용됩니다.

설명

이 Python 데코레이터는 제한된 런타임의 백그라운드 작업이나 기타 비 웹 프로세서 에 사용될 수 있습니다. 이는 일반적으로 작업자 프로세스, 작업 기반 시스템 및 독립 실행형 스크립트와 같은 비웹 활동에 사용됩니다. 백그라운드 작업으로 표시된 트랜잭션은 APM UI에서 비웹 프로세서로 표시되며 웹 트랜잭션과 분리됩니다.

중요

함수가 아직 계측되지 않은 경우 function_trace() 사용하여 백그라운드 작업 내에서 해당 함수에 대한 함수 추적을 만들 수 있습니다. 또는 구성 파일을 사용하여 계측되지 않은 기능을 계측할 수 있습니다.

백그라운드 작업 데코레이터를 사용하는 함수가 웹 트랜잭션 컨텍스트 내에서 호출되면 웹 트랜잭션은 백그라운드 작업으로 표시됩니다. 소요 시간 측정은 원래 웹 트랜잭션이 시작될 때 시작됩니다.

데코레이터를 사용할 수 없는 경우 다음 호출 형식 중 하나가 더 유용할 수 있습니다.

  • The context manager

    : 모니터링할 작업이 런타임에만 결정되고 가져오기 시간에는 결정되지 않는 경우 BackgroundTask 컨텍스트 관리자를 사용하여 코드 블록 실행을 직접 래핑할 수 있습니다. (이것은 BackgroundTaskWrapper 에서 사용하는 컨텍스트 관리자입니다.)

  • The wrapper

    : 추적하려는 특정 함수가 어디에 있는지 미리 알고 있다면 background_task 데코레이터를 사용할 수 있습니다. 하지만 트레이스가 되어야 하는 모든 기능을 모르는 경우(예를 들어 라우팅 시스템의 일부로 동적으로 조회되는 경우) BackgroundTaskWrapper 을 사용하여 해당 기능을 래핑해야 합니다. 등록시 또는 전화시.

  • The path-based wrapper

    : 경로 기반 래퍼 형식은 wrap_background_task 입니다.

이러한 함수 형식의 차이점과 사용에 대한 자세한 내용은 변수 호출 형식 을 참조하세요.

매개변수

데코레이터 및 컨텍스트 관리자 매개변수

newrelic.agent.background_task(application=None, name=None, group=None)
newrelic.agent.BackgroundTask(application=None, name=None, group=None)

이러한 호출에 대한 매개변수:

매개변수

설명

application

애플리케이션 인스턴스

필수의. 데이터가 보고되는 응용 프로그램입니다. 기본값은 None 입니다. 값을 지정하지 않으면 에이전트 구성 (구성 파일 또는 환경 변수)에 지정된 응용 프로그램이 사용됩니다.

애플리케이션 객체 생성에 대한 자세한 내용은 application() 메서드를 참조하세요.

애플리케이션이 지정되더라도 요청 환경 사전당 WSGI 애플리케이션에 newrelic.app_name 이 정의되어 있으면 애플리케이션을 계속 재정의할 수 있습니다.

name

필수의. 트랜잭션의 이름입니다. 기본값은 None 입니다. 기본적으로 이름은 데코레이터가 적용된 함수의 이름이지만 이 이름을 제공하여 이를 재정의할 수 있습니다.

group

선택 과목. groupname 매개변수의 이름 지정 구조를 나타냅니다. 이것은 UI에서 트랜잭션 유형 을 설정하는 데 사용됩니다.

제공되지 않은 경우 그룹은 이름이 module:class.function 또는 module:function 형식이고 실행 중인 함수의 이름을 나타내는 것으로 가정하여 기본적으로 Function 으로 설정됩니다. 사용자 지정 그룹을 생성하는 경우 Python/ 접두사를 사용하는 것이 좋습니다.

래퍼 매개변수:

newrelic.agent.BackgroundTaskWrapper(wrapped, application=None, name=None, group=None)

BackgroundTaskWrapper background_task 데코레이터 및 이 추가 wrapped 매개변수와 동일한 매개변수 를 사용합니다.

매개변수

설명

wrapped

방법

필수의. 추적할 방법입니다.

경로 기반 매개변수:

newrelic.agent.wrap_background_task(module, object_path, application=None, name=None, group=None)

wrap_background_task background_task 데코레이터와 동일한 매개변수 와 다음 추가 매개변수를 사용합니다.

매개변수

설명

module

모듈 또는 문자열

필수의. 계측 중인 웹이 아닌 기능/활동이 포함된 모듈입니다.

object_path

필수의. 모듈의 경로입니다.

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)

이 예에서 에이전트가 모니터링하는 웹 트랜잭션에서 이 호출이 이루어진 경우 호출은 웹 트랜잭션을 백그라운드 작업으로 재분류합니다. 그러나 호출이 백그라운드 스레드 또는 코루틴에서 이루어진 경우 호출이 반환될 때까지 발생하는 것을 추적하는 새로운 백그라운드 작업 트랜잭션의 기록을 시작합니다.

문제점 해결

백그라운드 작업의 트랜잭션이 UI에 표시되지 않는 경우 이는 백그라운드 작업에 의해 생성된 트랜잭션이 종료되지 않았거나 작업이 너무 오래 실행되었기 때문일 수 있습니다. 백그라운드 작업이 20분 이상 실행되면 너무 오래되어 보관할 수 없다고 간주되어 서버에서 삭제됩니다. 백그라운드 작업은 20분 이상 실행되어서는 안 되며, 실행되는 경우 여러 백그라운드 작업으로 나누어야 합니다.

Copyright © 2024 New Relic Inc.

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