• 로그인지금 시작하세요

사용자의 편의를 위해 제공되는 기계 번역입니다.

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

문제 신고

register_application(파이썬 에이전트 API)

통사론

newrelic.agent.register_application(name=None, timeout=None)

Python 에이전트를 즉시 등록합니다. 에이전트의 수동 초기화에 사용됩니다.

설명

initialize 이 호출되면 Python 에이전트를 설정하지만 수집기 에 에이전트를 등록하지 않습니다. 이 호출은 에이전트를 수집기에 등록합니다.

이것은 주로 API를 사용하여 계측된 비 웹 백그라운드 트랜잭션 에 사용됩니다. 웹이 아닌 트랜잭션과 함께 사용하는 경우 initialize 호출 후 가능한 한 빨리 register_application 를 호출하십시오.

웹 트랜잭션의 경우 에이전트는 일반적으로 첫 번째 웹 요청 또는 백그라운드 작업이 발생할 때 자동으로 등록됩니다. 에이전트는 수집기로부터 서버 측 구성 을 수신합니다. 등록은 1초 정도 걸릴 수 있으므로 일반적으로 가장 이른 트랜잭션에서 세부 정보가 손실됩니다. register_application 을(를) 사용하여 등록을 강제 실행하여 이 모든 데이터를 수집할 수 있지만 그렇게 하면 앱이 웹 요청을 처리하거나 백그라운드 작업을 실행하기 전에 등록이 완료될 때까지 기다릴 수 있습니다.

스크립트 자체가 WSGI 서버를 실행하는 경우 기본 스크립트 파일의 기본 프로그램 스레드에서 register_application 를 호출합니다. Apache/mod_wsgi 또는 uWSGI를 사용하는 경우 WSGI 스크립트 파일에서 호출하고 initialize 바로 뒤에 호출합니다 .

이 호출은 application 과 동일한 방식으로 애플리케이션 객체를 반환합니다. 애플리케이션 객체는 현재 에이전트 모니터링 애플리케이션에 대한 참조를 가져오는 데 사용되며 일부 Python 에이전트 API 호출에서 사용됩니다.

전역 가져오기 잠금 중 호출 방지

Python 전역 가져오기 잠금이 유지될 때 0이 아닌 시간 초과로 register_application 를 호출하지 마십시오. 즉, 모듈을 가져오는 동안 전역 범위의 모듈 파일에서 호출하지 마십시오. 그렇게 하면 이 호출에 의해 생성된 백그라운드 스레드와 일시적인 교착 상태가 발생할 수 있습니다(시간 초과가 만료될 때까지 교착 상태가 해제되지 않음).

많은 WSGI 서버는 표준 Python 모듈 가져오기 메커니즘을 통해 WSGI 애플리케이션이 포함된 모듈을 가져옵니다. 이러한 경우 전역 가져오기 잠금이 유지되고 위에서 설명한 교착 상태 문제가 발생할 수 있습니다.

Gunicorn의 경우: 방금 설명한 교착 상태 문제는 Gunicorn을 사용할 때도 발생할 수 있습니다. 문제는 WSGI 모듈에서 register_application 을 트리거하면 상위 프로세스에 모듈을 미리 로드하기 때문에 안전하지 않다는 것입니다. Gunicorn과 함께 register_application 를 사용하려면(시간 초과 여부에 관계없이) post_fork() 콜백에서 호출합니다. Apache/mod_wsgi에서는 이러한 도구가 이를 수행하지 않도록 설계되었기 때문에 문제가 되지 않으므로 WSGI 애플리케이션이 로드될 때 백그라운드 스레드를 생성하는 것이 안전합니다.

작업자 프로세스 포크 후 호출

하위 작업자 프로세스에서 트랜잭션을 기록하는 경우 하위 작업자 프로세스가 분기되기 전에 상위 프로세스에서 register_application 를 호출하지 마십시오. 분기하기 전에 register_application 을 호출하면 프로세스가 분기될 때 백그라운드 에이전트 스레드가 종료됩니다. 상위 스레드가 수집기에 데이터를 보고하기 때문에 에이전트는 하위 작업자 프로세스의 데이터를 보고할 수 없습니다.

매개변수

매개변수

설명

name

선택 과목. 애플리케이션 이름. 설정하면 Python 에이전트 구성에 설정된 애플리케이션 이름을 재정의합니다.

timeout

정수 또는 부동 소수점

선택 사항이지만 적극 권장합니다. 포기하고 응답을 보내기 전에 앱이 등록을 시도하는 시간(초)입니다. 0 값은 애플리케이션이 요청을 처리하기 전에 등록을 기다리지 않음을 의미합니다. 기본값은 0 입니다.

이 값은 제어가 반환되고 호출자가 계속 진행하도록 허용되기 전에 호출자가 차단되어야 하는 최대 시간(초)을 제공합니다. 값이 없으면 호출은 에이전트 구성에서 전역적으로 구성된 startup_timeout 설정을 사용하며 기본적으로 0.0 입니다.

반환 값

일부 다른 Python 에이전트 API 호출에서 사용할 수 있는 애플리케이션 개체를 반환합니다.

백그라운드 작업 등록

이 예는 시간 초과가 긴 웹이 아닌 백그라운드 작업을 등록합니다. 일반적으로 웹 응용 프로그램의 경우 시간 제한이 매우 짧지만(기본값은 0), 초기화 및 등록이 수행되도록 하기 위해 드물게 발생하는 비웹 작업에 대해서는 더 긴 시간 제한을 설정할 수 있습니다.

import newrelic.agent
newrelic.agent.initialize('newrelic.ini')
newrelic.agent.register_application(timeout=10.0)
@newrelic.agent.background_task()
def main():
pass
if __name__ == '__main__':
main()
Copyright © 2022 New Relic Inc.