構文
newrelic.agent.background_task(application=None, name=None, group=None)
バックグラウンドタスクやその他の非ウェブトランザクションを計測するために使用されます。
説明
この Python デコレーターは、バックグラウンドタスクやその他の 非ウェブトランザクションを計測するために使用することができます 。これは通常、ワーカープロセス、ジョブベースのシステム、およびスタンドアロンのスクリプトなどの非ウェブアクティビティを計測するために使用されます。バックグラウンドタスクとしてマークされたトランザクションは、APM UIにおいて非ウェブトランザクションとして表示され、ウェブトランザクションから分離されます。
callout.imporant
関数がまだインスツルメントされていない場合は、 function_trace() を使用して、バックグラウンドタスク内でその関数の関数トレースを作成することができます。また、 設定ファイル を使用して、インスツルメンテーションされていない関数をインスツルメンテーションすることもできます。
バックグラウンド・タスク・デコレーターを使用した関数が、ウェブ・トランザクションのコンテキスト内で呼び出された場合、そのウェブ・トランザクションはバックグラウンド・タスクとしてマークされます。所要時間の測定は、元のウェブ・トランザクションが開始された時点から始まります。
デコレーターを使用できない場合は、これらの呼び出し形式のいずれかを使用すると便利です。
- コンテキスト・マネージャー: 監視するタスクが(インポート時ではなく)実行時にのみ決定される場合、
BackgroundTask
コンテキスト・マネージャーを使用して、コードのブロックの実行を直接ラップすることができます。(これはBackgroundTaskWrapper
で使用されるコンテキスト・マネージャーです。) - ラッパー: 追跡したい特定の関数がどこにあるか事前にわかっている場合は、
background_task
デコレーターを使うことができます。しかし、追跡する必要のある全ての関数を知らない場合(例えば、ルーティングシステムの一部として動的に検索されている場合)は、BackgroundTaskWrapper
を使って、登録時や呼び出し時に関数をラップする必要があります。 - パスベースのラッパー: パスベースのラッパー形式は
wrap_background_task
.
これらの関数形式の違いや用途については、 Variable Call Formats を参照してください。
パラメータ
デコレーターとコンテキストマネージャーのパラメーター
newrelic.agent.background_task(application=None, name=None, group=None)
newrelic.agent.BackgroundTask(application=None, name=None, group=None)
これらのコールのパラメータ
パラメーター | 説明 |
---|---|
アプリケーションインスタンス | 必要です。データを報告する際のアプリケーション。デフォルトは アプリケーション・オブジェクトの生成については、 アプリケーションは、たとえ指定されていても、 |
文字列 | 必須項目です。トランザクションの名前です。既定値は |
文字列 | オプションです。 指定されない場合、グループのデフォルトは |
ラッパーのパラメータです。
newrelic.agent.BackgroundTaskWrapper(wrapped, application=None, name=None, group=None)
BackgroundTaskWrapper
は、 background_task
デコレーターと同じ パラメータ と、この追加の ラップされた
パラメータを取ります。
パラメーター | 説明 |
---|---|
メソッド | 必要です。トレースするメソッドです。 |
パスベースのパラメータ
newrelic.agent.wrap_background_task(module, object_path, application=None, name=None, group=None)
wrap_background_task
は、 background_task
デコレータと同じ パラメータ を取り、さらに以下の追加パラメータを取ります。
パラメーター | 説明 |
---|---|
モジュール または 文字列 | 必要です。インスツルメンテーションを行うノンウェブ機能/アクティビティを含むモジュール。 |
文字列 | 必須です。モジュールへのパスです。 |
例
background_task
デコレーターの例
ここでは、 background_task
デコレーターを使用した例を紹介します。
@newrelic.agent.background_task()def task(): ...
BackgroundTask
コンテキストマネージャーの例
BackgroundTask の使用例
:
application = newrelic.agent.application()name = newrelic.agent.callable_name(task)
with BackgroundTask(application, name): task()
より多くのパラメータを持つ別の例を示します。
application = newrelic.agent.register_application(timeout=10.0)
def execute_task(task_name): with newrelic.agent.BackgroundTask(application, name=task_name, group='Task'): ...
BackgroundTaskWrapper
例
BackgroundTaskWrapperの使用例
:
task = newrelic.agent.BackgroundTaskWrapper(get_next_task())result = task(*args, **kwargs)
この例では、この呼び出しがエージェントによって監視されているウェブ・トランザクション内で行われた場合、呼び出しはウェブ・トランザクションをバックグラウンド・タスクとして再分類します。しかし、この呼び出しがバックグラウンドのスレッドやコルーチン内で行われた場合は、呼び出しが戻るまでの間に発生したことを追跡する新しいバックグラウンド・タスク・トランザクションの記録が開始されます。