• ログイン今すぐ開始

本書は、お客様のご参考のために原文の英語版を機械翻訳したものです。

英語版と齟齬がある場合、英語版の定めが優先するものとします。より詳しい情報については、本リンクをご参照ください。

問題を作成する

asgi_application (PythonエージェントAPI)

構文

newrelic.agent.asgi_application(application=None, name=None, group=None, framework=None)

ASGIアプリケーションのエントリーポイントをマークすることで、Webトランザクションを監視します。

説明

asgi_application は、ASGI アプリケーションのエントリーポイントをインスツルメン トすることで Web トランザクションを監視するために使用される Python デコレーターです。Python エージェントは、 ASGI を使用するほとんどのフレームワークとサーバー を自動的にサポートします。使用しているフレームワークやウェブサーバーがサポートされていない場合は、 高度な統合プロセスの一部としてこのAPIを使用する必要があるかもしれません

asgi_application デコレーターを使用できない場合は、以下の他の呼び出し形式のいずれかを使用できます。

  • ラッパー: ラッパーコール: ASGIApplicationWrapper.スタックされる可能性のある別々のASGIアプリケーション・コンポーネントのために、複数の場所でラッパーを利用することができます。その場合、最初に遭遇したラッパーがトランザクションの開始を意味し、エージェントはその最初のラッパーに基づいてターゲット・アプリを決定します(それ以降のラッパーは無視されます)。
  • パスベースのラッパー: パスベースのラッパーコールは wrap_asgi_application.インスツルメンテーション・スコープでASGIオブジェクトを変数として参照できなかった場合に使用します。これはデコレーターと同じパラメータを取り、さらに moduleobject_path のパラメータを取ります。

デコレーターとラッパーを使い分ける理由については、 Different call formats を参照してください。

パラメータ

デコレーターのパラメータ

newrelic.agent.asgi_application(application=None, name=None, group=None, framework=None)

asgi_application デコレーターはこれらのパラメータを使用します。

パラメーター

説明

アプリケーション

文字列、アプリケーションオブジェクト

オプションです。このデータと関連付けるアプリケーション名。デフォルトは None です。値を指定しない場合、エージェントはエージェント構成で指定されたアプリケーション名 を使用します

文字列を指定する場合は、正確なアプリケーション名でなければならず、アプリケーション名のリストにすることはできません。アプリケーション・オブジェクトの生成については、 アプリケーション メソッドを参照してください。

name

文字列

オプションで、ほとんど使用されません。ASGI エントリポイントを介して取得されるすべてのリクエストのトランザクション名を設定します。通常は、すべてのトランザクションが同じ名前になることを望まないため、使用されません( Metric grouping issue も参照)。

グループ

文字列

オプションで、ほとんど使用されません。 グループ は、 名前 パラメータの命名構造を表しています。これを設定すると、 トランザクションタイプのサブカテゴリ が作成されます。 name と同様に、通常、アプリケーション全体を1つのトランザクション名やカテゴリとしてレポートすることはないため、これを使用することはほとんどありません。

フレームワーク

タプル

オプションです。フレームワークの名前とバージョン番号を表す2つの文字列を持つタプルです。例: ('Flask', '0.12.2')

ラッパーのパラメーター

newrelic.agent.ASGIApplicationWrapper(wrapped, application=None, name=None, group=None, framework=None)

これは、 asgi_application が必要とする パラメータ のすべてに加えて、 をラップした パラメータを取ります。

パラメーター

説明

ラップ

オブジェクト

必須.ラッピングされるASGIオブジェクト。

パスベースのラッパーパラメーター

newrelic.agent.wrap_asgi_application(module, object_path, application=None, name=None, group=None, framework=None)

asgi_application で必要な パラメータ に加えて、この呼び出しでは、追加の moduleobject_path パラメータが必要です。

パラメーター

説明

モジュール

オブジェクト または 文字列

必須.ASGIオブジェクトを含むモジュールです。

object_path

文字列

必須.ファイル内のASGIオブジェクトを見つけるためのクラスメソッドまたはメソッドを表します。

asgi_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の例

ASGIApplicationWrapper の使用例で、 asgi_application デコレーターが動作しない場合に必要になることがあります。

import os
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite.settings")
from django.core.asgi import get_asgi_application
application = get_asgi_application()
application = newrelic.agent.ASGIApplicationWrapper(application)

wrap_asgi_applicationの例

パスベースのラッパーの使用例。

import newrelic.agent
newrelic.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')
Copyright © 2022 New Relic株式会社。

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.