Skip to main content
Weave は、アプリケーションのパフォーマンスへの影響を最小限に抑えるために、バックグラウンドスレッドでトレースデータをアップロードします。ただし、multiprocessing やタスクキューシステム、あるいは Celery のようなワーカープロセスを使用している場合、トレースデータが失われることがあります。これは、バックグラウンドスレッドによるトレースのアップロードが完了する前に、ワーカープロセスが終了してしまうためです。 ワーカープロセスでのデータ損失を防ぐには、ワーカータスクが完了する前に client.flush() または client.finish() を呼び出し、バックグラウンドアップロードが完了するようにしてください。これは、AWS LambdaGoogle Cloud Run、または実行直後に終了するノートブックのような短命な環境で特に有効です。 これらのメソッドは用途が異なるため、環境に合ったものを選択してください。
  • weave.flush(): 出力を表示せずにフラッシュします。Weave をワーカープロセスや継続的インテグレーション (CI) 環境に統合している場合に推奨されます。
  • weave.finish(): 進捗バーまたはステータスコールバックで進行状況を確認できます。対話型スクリプトやノートブックに推奨されます。
どちらのメソッドも、すべてのバックグラウンドアップロードが完了するまで処理をブロックするため、ワーカープロセスの終了時にトレースデータが失われるのを防げます。 次の例では、ワーカーの処理が終了する前にトレースをフラッシュするために、Celery タスクから client.finish() を呼び出す方法を示します。[TEAM-NAME] は W&B のチーム名に、[PROJECT-NAME] は W&B の project 名に置き換えてください。
別の方法として、with コンテキストマネージャーを使用すると、終了時に weave.finish() が自動的に呼び出されます。
weave.flush() を使用すると、アプリケーションのパフォーマンスを改善することもできます。詳細は、Flushing を参照してください。 データ損失への耐性をさらに高めるには、データをサーバーに送信する前にトレースデータをディスクに書き込む ライトアヘッドログ を有効にすることも検討してください。
Trace Data パフォーマンス