Repository navigation
--latestで複数ファイルの更新待ちを並列化する - #1940
Merged
Merged
Conversation
Contributor
There was a problem hiding this comment.
🟢 Approval recommended
承認を妨げる未解決のレビュー指摘がないためです。
No open issues 🎉
What changed in this PR
--latest使用時に必要なファイルの更新要求を先にすべて送信し、Annofab側での生成を並列化する変更です。更新処理をDownloadingFileへ共通化し、各コマンドの待ち時間を短縮します。
変更内容:
- 更新要求・完了待機・失敗集約を共通化し、更新済みファイルの二重更新を防止。
- 入力データ一覧、アノテーション一覧・集計、動画長、統計可視化、プロジェクト間比較へ適用。ローカル指定や空タスク時の更新省略を維持。
- 更新要求と待機の順序、重複排除、失敗時のダウンロード抑止、更新対象の選択を検証するテストを追加・拡充。
| File | Description |
|---|---|
tests/task/test_list_all_with_statistics.py |
入力種別・取得元別の更新対象と空タスク時の省略を検証。 |
tests/statistics/test_visualization_source_files.py |
可視化用ファイルの更新順序と回数を検証。 |
tests/input_data/test_list_all_input_data_merged_task.py |
一括更新の順序と失敗時のダウンロード抑止を検証。 |
tests/common/test_update_download_files.py |
重複排除、待機設定、空の指定の拒否を検証。 |
tests/annotation_zip/test_sum_annotation_duration.py |
ローカル指定と--latestの組み合わせを検証。 |
tests/annotation_zip/test_diff_annotation.py |
比較対象の一括更新と二重更新防止を検証。 |
annofabcli/task/list_all_with_statistics.py |
動画用のアノテーションと入力データを並列更新。 |
annofabcli/statistics/visualize_video_duration.py |
動画長可視化の入力データとタスクを並列更新。 |
annofabcli/statistics/visualization/visualization_source_files.py |
可視化に必要なファイルを指定の待機設定で一括更新。 |
annofabcli/statistics/list_video_duration.py |
動画長一覧の入力データとタスクを並列更新。 |
annofabcli/statistics/list_annotation_duration.py |
アノテーションと入力データを並列更新。 |
annofabcli/statistics/list_annotation_count.py |
入力データ単位の集計で必要なファイルを並列更新。 |
annofabcli/project/update_download_files.py |
プロジェクト数の検証を残し、更新処理を共通実装へ委譲。 |
annofabcli/input_data/list_all_input_data.py |
親タスクIDを含める場合に入力データとタスクを並列更新。 |
annofabcli/input_data/list_all_input_data_merged_task.py |
結合に使う入力データとタスクを並列更新。 |
annofabcli/common/video_duration.py |
動画長コマンド共通の取得処理に並列更新を適用。 |
annofabcli/common/download.py |
更新対象の型と一括更新・完了待機処理を共通化。 |
annofabcli/annotation_zip/sum_annotation_duration.py |
区間長集計に必要なファイルを選択して一括更新。 |
annofabcli/annotation_zip/list_single_point_annotation.py |
点一覧のタスクメタデータ取得時に並列更新。 |
annofabcli/annotation_zip/list_segmentation_annotation.py |
セグメンテーション一覧のメタデータ取得時に並列更新。 |
annofabcli/annotation_zip/list_range_annotation.py |
区間一覧のタスクメタデータ取得時に並列更新。 |
annofabcli/annotation_zip/list_polyline_annotation.py |
折れ線一覧のタスクメタデータ取得時に並列更新。 |
annofabcli/annotation_zip/list_polygon_annotation.py |
ポリゴン一覧のタスクメタデータ取得時に並列更新。 |
annofabcli/annotation_zip/list_classification_annotation.py |
分類一覧のタスクメタデータ取得時に並列更新。 |
annofabcli/annotation_zip/list_annotation_bounding_box_2d.py |
2D矩形一覧のタスクメタデータ取得時に並列更新。 |
annofabcli/annotation_zip/list_annotation_attribute.py |
属性一覧でローカル指定を考慮して並列更新。 |
annofabcli/annotation_zip/list_annotation_3d_segment.py |
3D線分一覧のタスクメタデータ取得時に並列更新。 |
annofabcli/annotation_zip/list_annotation_3d_bounding_box.py |
3D矩形一覧のタスクメタデータ取得時に並列更新。 |
annofabcli/annotation_zip/diff_annotation.py |
比較対象プロジェクトのアノテーションを並列更新。 |
annofabcli/annotation_zip/count_annotation.py |
集計条件に応じてタスクとアノテーションを並列更新。 |
annofabcli/annotation_zip/count_annotation_attribute_filled.py |
属性入力状況の集計に必要なファイルを並列更新。 |
Review effort: Balanced
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
input_data list_all_merged_task --latestなどで、ファイルごとに更新完了を待ってから次の更新を要求していたため、複数ファイルの生成待ち時間が積み重なっていました。project update_download_filesの処理をDownloadingFileへ共通化し、必要な更新要求をすべて送信してから完了を待つようにしました。入力データ一覧、アノテーション一覧・集計、動画長、統計可視化、プロジェクト間比較と、対応する非推奨コマンドに適用しています。ローカルファイル指定や取得元に応じて更新対象を選び、完了後のダウンロードでは二重更新しません。task list_all_with_statisticsでは、対象タスクが0件の場合に集計用ファイルを更新しない動作を維持し、タスク一覧の取得後に動画用のアノテーションZIPと入力データJSONを並列更新します。CLIの引数・出力形式は変更せず、ドキュメントの変更はありません。検証:
make format/make lint成功uv run pytest -n 2 -m 'not access_webapi': 2021 passed, 3 skipped