構文
newrelic.agent.wsgi_application(application=None, name=None, group=None, framework=None)
WSGIアプリケーションのエントリーポイントをマークすることで、Webトランザクションを監視します。
説明
wsgi_application
は、WSGI アプリケーションのエントリーポイントをインスツルメン トすることでウェブトランザクションを監視するために使用される Python デコレーターです。Python エージェントは、 WSGI を使用するほとんどのフレームワークとサーバー を自動的にサポートします。使用しているフレームワークやウェブサーバがサポートされていない場合は、 高度な統合プロセスの一部としてこのAPIを使用する必要があるかもしれません 。
wsgi_application
デコレーターを使用できない場合は、以下の他の呼び出し形式を使用できます。
- The wrapper: The wrapper call is
WSGIApplicationWrapper
.スタック化されたWSGIアプリケーション・コンポーネントのために、複数の場所でラッパーを使用することができます。この場合、最初に遭遇したラッパーがトランザクションの開始を意味し、エージェントはその最初のラッパーに基づいてターゲットアプリを決定します(それ以降のラッパーは無視されます)。 - パスベースのラッパー: パスベースのラッパーコールは
wrap_wsgi_application
.WSGIオブジェクトをインスツルメンテーションスコープの変数として参照できなかった場合に使用します。これは、デコレータと同じパラメータを取り、さらにmodule
とobject_path
パラメータを取ります。
デコレーターとラッパーを使い分ける理由については、 Different call formats を参照してください。
パラメータ
デコレーターのパラメータ
newrelic.agent.wsgi_application(application=None, name=None, group=None, framework=None)
wsgi_application
デコレータは、これらのパラメータを使用します。
パラメーター | 説明 |
---|---|
文字列、アプリケーションオブジェクト | オプションです。このデータと関連付けるアプリケーション名。デフォルトは 文字列を指定する場合は、正確なアプリケーション名でなければならず、アプリケーション名のリストにすることはできません。アプリケーション・オブジェクトの生成については、 アプリケーションは、たとえ指定されていても、 |
文字列 | オプション、ほとんど使用されません。WSGIエントリーポイントを介して取得されるすべてのリクエストのトランザクション名を設定します。通常は、すべてのトランザクションが同じ名前になることを望まないため、一般的には使用されません( Metric grouping issue も参照してください)。 |
文字列 | オプションで、ほとんど使用されません。 |
タプル | オプションです。フレームワークの名前とバージョン番号を表す2つの文字列を持つタプルです。例: |
ラッパーのパラメーター
newrelic.agent.WSGIApplicationWrapper(wrapped, application=None, name=None, group=None, framework=None)
これは、 wsgi_application
が必要とする パラメータ のすべてに加えて、 をラップした
パラメータを取ります。
パラメーター | 説明 |
---|---|
オブジェクト | 必須。ラップされるWSGIオブジェクトです。 |
パスベースのラッパーパラメーター
newrelic.agent.wrap_wsgi_application(module, object_path, application=None, name=None, group=None, framework=None)
パラメータ wsgi_application
で必要なものに加えて、この呼び出しではさらに module
と object_path
パラメータが必要です。
パラメーター | 説明 |
---|---|
オブジェクト または 文字列 | 必要です。WSGIオブジェクトを含むモジュールです。 |
文字列 | 必須です。クラスメソッドまたはファイル内のWSGIオブジェクトを見つけるためのメソッドを表します。 |
例
wsgi_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]
WSGIApplicationWrapperの例
WSGIApplicationWrapper
の使用例です。これは、 wsgi_application
デコレータが動作しない場合に必要になるかもしれません。
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)
wrap_wsgi_applicationの例
パスベースのラッパーの使用例。
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')