Syntaxe
newrelic.agent.wsgi_application(application=None, name=None, group=None, framework=None)
Monitorer les transactions Web en marquant le point d'entrée de l'application WSGI .
Description
wsgi_application
est un décorateur Python utilisé pour monitorer les transactions Web en instrumentant le point d'entrée de l'application WSGI . L'agent Python prend automatiquement en charge la plupart des frameworks et serveurs qui utilisent WSGI. Si votre framework ou votre serveur Web n'est pas pris en charge, vous devrez peut-être utiliser cette API dans le cadre du processus d'intégration avancé.
Si vous ne pouvez pas utiliser le décorateur wsgi_application
, vous pouvez utiliser l'un de ces autres formats d'appel :
- The wrapper: L'appel wrapper est
WSGIApplicationWrapper
. Vous pouvez utiliser le wrapper à plusieurs endroits pour des composants d’application WSGI distincts qui peuvent être empilés. Dans ce cas, le premier wrapper rencontré marque le début de la transaction et l'agent détermine l'application cible en fonction de ce premier wrapper (et ignore les suivants). - The path-based wrapper: L'appel wrapper basé sur le chemin est
wrap_wsgi_application
. Utilisez ceci si vous ne pouvez pas référencer l’objet WSGI en tant que variable dans la portée de l’instrumentation. Cela prend les mêmes paramètres que le décorateur avec des paramètresmodule
etobject_path
supplémentaires.
Pour une explication des raisons d'utiliser le décorateur par rapport aux wrappers, voir Différents formats d'appel.
Paramètres
Paramètre du décorateur
newrelic.agent.wsgi_application(application=None, name=None, group=None, framework=None)
Le décorateur wsgi_application
utilise ces paramètres :
paramètres | Description |
---|---|
chaîne ou objet d'application | Facultatif. Le nom de l'application à associer à ces données. La valeur par défaut est Si une chaîne est fournie, elle doit correspondre au nom exact application et ne peut pas être une liste de noms application . Pour en savoir plus sur la génération d’un objet d’application, consultez la méthode L'application, même si elle est spécifiée, peut toujours être remplacée si |
chaîne | Facultatif, rarement utilisé. Définit un nom de transaction pour toutes requests capturées via le point d'entrée WSGI . Généralement non utilisé, car vous ne voudriez généralement pas que toutes les transactions aient le même nom (voir également le problème de regroupement métrique). |
chaîne | Facultatif, rarement utilisé. Le |
uplet | Facultatif. Un uplet avec deux chaînes représentant le nom du framework et le numéro de version. Par exemple: |
Paramètres de l'enveloppe
newrelic.agent.WSGIApplicationWrapper(wrapped, application=None, name=None, group=None, framework=None)
Ceci prend tous les paramètres requis par wsgi_application
en plus d'un paramètre wrapped
:
paramètres | Description |
---|---|
objet | Requis. L'objet WSGI à envelopper. |
Paramètre de wrapper basé sur le chemin
newrelic.agent.wrap_wsgi_application(module, object_path, application=None, name=None, group=None, framework=None)
En plus du paramètre requis par wsgi_application
, cet appel nécessite des paramètres supplémentaires module
et object_path
:
paramètres | Description |
---|---|
objet ou chaîne | Requis. Le module contenant l'objet WSGI. |
chaîne | Requis. Représente la méthode de classe ou la méthode permettant de rechercher l'objet WSGI dans un fichier. |
Exemples
Exemple de wsgi_application
Un exemple de décorateur appelé sans le paramètre facultatif 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]
Exemple de WSGIApplicationWrapper
Un exemple d'utilisation du WSGIApplicationWrapper
, qui peut être nécessaire si le décorateur wsgi_application
ne fonctionne pas :
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)
Exemple de wrap_wsgi_application
Un exemple d'utilisation du wrapper basé sur le chemin :
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')