Sintaxis
newrelic.agent.wsgi_application(application=None, name=None, group=None, framework=None)
Monitor la transacción web marcando el punto de entrada de la aplicación WSGI.
Descripción
wsgi_application
es un decorador de Python utilizado para monitor transacciones web instrumentado el punto de entrada de la aplicación WSGI. El agente Python admite automáticamente la mayoría de los marcos y servidores que utilizan WSGI. Si su framework o servidor web no es compatible, es posible que necesite utilizar esta API como parte del proceso de integración avanzado.
Si no puede utilizar el decorador wsgi_application
, puede utilizar uno de estos otros formatos de llamada:
The wrapper:
La llamada contenedora es
WSGIApplicationWrapper
. Puede utilizar el contenedor en más de un lugar para distintos componentes de la aplicación WSGI que pueden apilarse. En ese caso, el primer contenedor encontrado marca el inicio de la transacción y el agente determina la aplicación de destino en función de ese primer contenedor (e ignora los siguientes).The path-based wrapper:
La llamada contenedora basada en ruta es
wrap_wsgi_application
. Úselo si no puede hacer referencia al objeto WSGI como una variable en el alcance de la instrumentación. Esto toma el mismo parámetro que el decorador con parámetrosmodule
yobject_path
adicionales.
Para obtener una explicación de los motivos para utilizar el decorador frente a los contenedores, consulte Diferentes formatos de llamada.
Parámetros
Parámetro decorador
newrelic.agent.wsgi_application(application=None, name=None, group=None, framework=None)
El decorador wsgi_application
utiliza estos parámetros:
Parámetro | Descripción |
---|---|
cadena u objeto de aplicación | Opcional. El nombre de la aplicación para asociar con estos datos. El valor predeterminado es Si se proporciona una cadena, debe ser el nombre exacto de la aplicación y no puede ser una lista de nombres de aplicaciones. Para obtener más información sobre cómo generar un objeto de aplicación, consulte el método La aplicación, incluso si se especifica, aún se puede anular si |
cadena | Opcional, raramente usado. Establece un nombre de transacción para todas las solicitudes capturadas a través del punto de entrada WSGI. Generalmente no se usa, porque normalmente no se desea que todas las transacciones tengan el mismo nombre (consulte también el tema de agrupación métrica). |
cadena | Opcional, raramente usado. El |
tupla | Opcional. Una tupla con dos cadenas que representan el nombre del framework y el número de versión. Por ejemplo: |
Parámetro de envoltura
newrelic.agent.WSGIApplicationWrapper(wrapped, application=None, name=None, group=None, framework=None)
Esto toma todos los parámetros requeridos por wsgi_application
además de un parámetro wrapped
:
Parámetro | Descripción |
---|---|
objeto | Requerido. El objeto WSGI que se va a empaquetar. |
Parámetro contenedor basado en ruta
newrelic.agent.wrap_wsgi_application(module, object_path, application=None, name=None, group=None, framework=None)
Además del parámetro requerido por wsgi_application
, esta llamada requiere parámetros module
y object_path
adicionales:
Parámetro | Descripción |
---|---|
objeto o cadena | Requerido. El módulo que contiene el objeto WSGI. |
cadena | Requerido. Representa el método de clase o el método para buscar el objeto WSGI dentro de un archivo. |
Ejemplos
ejemplo wsgi_application
Un ejemplo de llamada del decorador sin el parámetro opcional application
:
@newrelic.agent.wsgi_application()def application(environ, start_response): status = '200 OK' output = 'Hello World!'
response_headers = [('Content-type', 'text/plain'), ('Content-Length', str(len(output)))] start_response(status, response_headers)
return [output]
Ejemplo de WSGIApplicationWrapper
Un ejemplo del uso de WSGIApplicationWrapper
, que puede ser necesario si el decorador wsgi_application
no funciona:
import osos.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite.settings")from django.core.wsgi import get_wsgi_applicationapplication = get_wsgi_application()
application = newrelic.agent.WSGIApplicationWrapper(application)
ejemplo de wrap_wsgi_application
Un ejemplo de uso del contenedor basado en ruta:
import newrelic.agentnewrelic.agent.initialize('newrelic.ini')
class Application(object): def application(self, environ, start_response): status = '200 OK' response_headers = [('Content-type', 'text/plain')] start_response(status, response_headers) return [b'Hello World']
newrelic.agent.wrap_wsgi_application(__name__, 'Application.application')