• EnglishEspañol日本語한국어Português
  • ログイン今すぐ開始

この機械翻訳は、参考として提供されています。

英語版と翻訳版に矛盾がある場合は、英語版が優先されます。詳細については、このページを参照してください。

問題を作成する

background_task (PythonエージェントAPI)

構文

newrelic.agent.background_task(application=None, name=None, group=None)

インストゥルメントがバックグラウンド タスクまたは有限ランタイムの他の非ウェブ開催に使用されます。

説明

この Python デコレータは、インストゥルメントされたバックグラウンド タスクやその他の有限ランタイムの非ウェブサイトに使用できます。 これは通常、ワーカー プロセス、ジョブベースのシステム、スタンドアロン スクリプトなど、インストゥルメントされた非 Web アクティビティに使用されます。 バックグラウンド タスクとしてマークされたトランザクションは、APM UI では非ウェブサイトとして表示され、ウェブサイトから分離されます。

重要

関数がまだインストルメント化されていない場合は、 function_trace() を使用して、バックグラウンド タスク内でその関数の関数トレースを作成できます。または、 構成ファイルを 使用して、計測されていない機能を計測することもできます。

バックグラウンド・タスク・デコレーターを使用した関数が、ウェブ・トランザクションのコンテキスト内で呼び出された場合、そのウェブ・トランザクションはバックグラウンド・タスクとしてマークされます。所要時間の測定は、元のウェブ・トランザクションが開始された時点から始まります。

デコレーターを使用できない場合は、これらの呼び出し形式のいずれかを使用すると便利です。

  • The context manager

    : 監視対象のタスクが実行時のみに決定される (インポート時ではない) 場合は、 BackgroundTaskコンテキスト マネージャーを使用して、コード ブロックの実行を直接ラップできます。 (これは、 BackgroundTaskWrapperによって使用されるコンテキスト マネージャーです。)

  • The wrapper

    : 追跡したい特定の関数がどこにあるかが事前にわかっている場合は、 background_taskデコレータを使用できます。 ただし、トレースする必要があるすべての関数がわからない場合 (たとえば、関数がルーティング システムの一部として動的に検索されている場合)、その時点でBackgroundTaskWrapperを使用して関数をラップする必要があります。登録時または電話時。

  • The path-based wrapper

    : パスベースのラッパー フォームは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)

これらのコールのパラメータ

パラメータ

説明

application

アプリケーションインスタンス

必要。データが報告されるアプリケーション。デフォルトは Noneです。値を指定しない場合は、エージェント 構成 (構成ファイルまたは環境変数) で指定されたアプリケーションが使用されます。

アプリケーション オブジェクトの生成の詳細については、 application() メソッドをご覧ください。

WSGI アプリケーションのリクエスト環境ディクショナリごとに newrelic.app_name が定義されている場合、アプリケーションは指定されていてもオーバーライドできます。

name

ストリング

必要。トランザクションの名前。デフォルト値は Noneです。デフォルトでは、名前はデコレーターが適用されている関数の名前になりますが、この名前を指定することでこれをオーバーライドできます。

group

ストリング

オプション。 group は、 name パラメータの命名構造を表します。これは、 トランザクション タイプを設定するために UI で使用されます。

指定しない場合、グループは、名前が module:class.function または module:function の形式で、実行される関数の名前を表すものとしてデフォルトで Function になります。カスタム グループを作成する場合は、接頭辞として Python/を付けることをお勧めします。

ラッパーのパラメータです。

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

BackgroundTaskWrapperbackground_task デコレータと同じ パラメータ と、この追加の wrapped パラメータを受け取ります。

パラメータ

説明

wrapped

メソッド

必要です。トレースするメソッドです。

パスベースのパラメータ

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

wrap_background_task は、 background_task デコレータと同じ パラメータ に加えて、次の追加パラメータを受け取ります。

パラメータ

説明

module

モジュール または 文字列

必要です。インスツルメンテーションを行うノンウェブ機能/アクティビティを含むモジュール。

object_path

ストリング

必須です。モジュールへのパスです。

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)

この例では、この呼び出しがエージェントによって監視されているウェブ・トランザクション内で行われた場合、呼び出しはウェブ・トランザクションをバックグラウンド・タスクとして再分類します。しかし、この呼び出しがバックグラウンドのスレッドやコルーチン内で行われた場合は、呼び出しが戻るまでの間に発生したことを追跡する新しいバックグラウンド・タスク・トランザクションの記録が開始されます。

トラブルシューティング

バックグラウンド タスクのトランザクションが UI に表示されない場合は、バックグラウンド タスクによって作成されたトランザクションが終了しなかったか、タスクの実行時間が長すぎたことが考えられます。 バックグラウンド タスクが 20 分を超えて実行される場合、そのタスクは保持するには古すぎると見なされるため、サーバーによって削除されます。 バックグラウンド タスクは 20 分を超えて実行しないでください。実行する場合は、複数のバックグラウンド タスクに分割する必要があります。

Copyright © 2024 New Relic株式会社。

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