통사론
newrelic.agent.asgi_application(application=None, name=None, group=None, framework=None)
ASGI 애플리케이션 진입점을 표시하여 웹 트랜잭션을 모니터링합니다.
설명
asgi_application
ASGI 애플리케이션 진입점을 계측하여 웹 트랜잭션을 모니터링하는 데 사용되는 Python 데코레이터입니다. Python 에이전트는 ASGI를 사용하는 대부분의 프레임워크와 서버 를 자동으로 지원합니다. 프레임워크 또는 웹 서버가 지원되지 않는 경우 고급 통합 프로세스 의 일부로 이 API를 사용해야 할 수 있습니다.
asgi_application
데코레이터를 사용할 수 없는 경우 다음 다른 호출 형식 중 하나를 사용할 수 있습니다.
The wrapper:
래퍼 호출은
ASGIApplicationWrapper
입니다. 스택될 수 있는 개별 ASGI 애플리케이션 구성 요소에 대해 둘 이상의 위치에서 래퍼를 사용할 수 있습니다. 이 경우 마주친 첫 번째 래퍼는 프로세서의 시작을 표시하고, 에이전트는 해당 첫 번째 래퍼를 기반으로 하여 강제, 목표 앱을 결정합니다(다음 래퍼는 무시합니다).The path-based wrapper:
경로 기반 래퍼 호출은
wrap_asgi_application
입니다. 계측 범위에서 ASGI 개체를 변수로 참조할 수 없는 경우 이를 사용합니다. 이는 추가module
및object_path
매개변수를 포함하는 데코레이터와 동일한 매개변수를 사용합니다.
데코레이터와 래퍼를 사용하는 이유에 대한 설명은 다른 호출 형식 을 참조하세요.
매개변수
데코레이터 매개변수
newrelic.agent.asgi_application(application=None, name=None, group=None, framework=None)
asgi_application
데코레이터는 다음 매개변수를 사용합니다.
매개변수 | 설명 |
---|---|
문자열또는 애플리케이션 객체 | 선택 과목. 이 데이터와 연결할 애플리케이션 이름입니다. 기본값은 문자열이 제공되면 정확한 애플리케이션 이름이어야 하며 애플리케이션 이름 목록이 될 수 없습니다. 애플리케이션 객체 생성에 대한 자세한 내용은 |
끈 | 선택 사항이며 거의 사용되지 않습니다. ASGI 진입점을 통해 캡처된 모든 요청에 대한 트랜잭션 이름을 설정합니다. 일반적으로 모든 트랜잭션이 동일한 이름을 갖는 것을 원하지 않기 때문에 일반적으로 사용되지 않습니다( 메트릭 그룹화 문제 참조). |
끈 | 선택 사항이며 거의 사용되지 않습니다. |
튜플 | 선택 과목. 프레임워크 이름과 버전 번호를 나타내는 두 개의 문자열이 있는 튜플. 예를 들어: |
래퍼 매개변수
newrelic.agent.ASGIApplicationWrapper(wrapped, application=None, name=None, group=None, framework=None)
이것은 wrapped
매개변수 외에 asgi_application
에 필요한 모든 매개변수 를 사용합니다.
매개변수 | 설명 |
---|---|
물체 | Required. 래핑할 ASGI 개체입니다. |
경로 기반 래퍼 매개변수
newrelic.agent.wrap_asgi_application(module, object_path, application=None, name=None, group=None, framework=None)
asgi_application
에 필요한 매개변수 외에도 이 호출에는 추가 module
및 object_path
매개변수가 필요합니다.
매개변수 | 설명 |
---|---|
개체 또는 문자열 | Required. ASGI 객체를 포함하는 모듈입니다. |
끈 | Required. 파일 내에서 ASGI 개체를 찾기 위한 클래스 메서드 또는 메서드를 나타냅니다. |
예
asgi_application 예시
선택적 application
매개변수 없이 호출되는 데코레이터의 예:
@newrelic.agent.asgi_application()async def application(scope, receive, send): await send( { "type": "http.response.start", "status": 200, "headers": [(b"Content-type", b"text/plain")] } ) await send( { "type": "http.response.body", "body": b"Hello World!" } )
ASGIApplicationWrapper 예제
asgi_application
데코레이터가 작동하지 않는 경우 필요할 수 있는 ASGIApplicationWrapper
사용의 예:
import osos.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite.settings")from django.core.asgi import get_asgi_applicationapplication = get_asgi_application()
application = newrelic.agent.ASGIApplicationWrapper(application)
wrap_asgi_application 예제
경로 기반 래퍼를 사용하는 예:
import newrelic.agentnewrelic.agent.initialize('newrelic.ini')
class Application: def __init__(self, scope): self.scope = scope
async def __call__(self, receive, send): await send({"type": "http.response.start", "status": 200}) await send({"type": "http.response.body", "body": b"Hello World!"})
newrelic.agent.wrap_asgi_application(__name__, 'Application')