Syntaxe
newrelic.agent.asgi_application(application=None, name=None, group=None, framework=None)
Monitorer les transactions Web en marquant le point d'entrée application ASGI.
Description
asgi_application
est un décorateur Python utilisé pour surveiller les transactions Web en instrumentant le point d'entrée application ASGI. L'agent Python prend automatiquement en charge la plupart des frameworks et serveurs qui utilisent ASGI. 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 asgi_application
, vous pouvez utiliser l'un de ces autres formats d'appel :
- The wrapper: L'appel wrapper est
ASGIApplicationWrapper
. Vous pouvez utiliser le wrapper à plusieurs endroits pour des composants d'application ASGI 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_asgi_application
. Utilisez ceci si vous ne pouvez pas référencer l’objet ASGI en tant que variable dans la portée de l’instrumentation. Cela prend le même paramètre que le décorateur avec les 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.asgi_application(application=None, name=None, group=None, framework=None)
Le décorateur asgi_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 |
chaîne | Facultatif, rarement utilisé. Définit un nom de transaction pour toutes requests capturées via le point d'entrée ASGI. 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.ASGIApplicationWrapper(wrapped, application=None, name=None, group=None, framework=None)
Ceci prend tous les paramètres requis par asgi_application
en plus d'un paramètre wrapped
:
paramètres | Description |
---|---|
objet | Required. L'objet ASGI à encapsuler. |
Paramètre de wrapper basé sur le chemin
newrelic.agent.wrap_asgi_application(module, object_path, application=None, name=None, group=None, framework=None)
En plus du paramètre requis par asgi_application
, cet appel nécessite des paramètres supplémentaires module
et object_path
:
paramètres | Description |
---|---|
objet ou chaîne | Required. Le module contenant l'objet ASGI. |
chaîne | Required. Représente la méthode de classe ou la méthode permettant de rechercher l'objet ASGI dans un fichier. |
Exemples
Exemple d'application asgi
Un exemple de décorateur appelé sans le paramètre facultatif 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!" } )
Exemple d'ASGIApplicationWrapper
Un exemple d'utilisation du ASGIApplicationWrapper
, qui peut être nécessaire si le décorateur asgi_application
ne fonctionne pas :
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)
Exemple d'application wrap_asgi
Un exemple d'utilisation du wrapper basé sur le chemin :
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')