Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

FIX: 非推奨のstartupイベントをlifespanに置き換え #1131

Merged
merged 1 commit into from
Mar 22, 2024

Conversation

sabonerune
Copy link
Contributor

内容

以下のコードが原因でDeprecationWarningが発生していたので更新します。

voicevox_engine/run.py

Lines 251 to 253 in c75b657

@app.on_event("startup")
def apply_user_dict() -> None:
update_dict()

関連 Issue

その他

動作上は全く変わらないと思います。


ref : Lifespan Events - FastAPI
ref : Lifespan - Starlette

ドキュメントを見て思ったのですが本来はlifespanで使用するオブジェクト(VOICEVOXではtts_enginescores)を初期化することが想定されている?

@sabonerune sabonerune requested a review from a team as a code owner March 21, 2024 09:55
@sabonerune sabonerune requested review from Hiroshiba and removed request for a team March 21, 2024 09:55
Copy link

Coverage Result

Resultを開く
Name Stmts Miss Cover
run.py 515 210 coverage-59%
voicevox_engine/init.py 1 0 coverage-100%
voicevox_engine/cancellable_engine.py 94 72 coverage-23%
voicevox_engine/core/init.py 0 0 coverage-100%
voicevox_engine/core/core_adapter.py 81 6 coverage-93%
voicevox_engine/core/core_initializer.py 60 30 coverage-50%
voicevox_engine/core/core_wrapper.py 225 157 coverage-30%
voicevox_engine/dev/init.py 0 0 coverage-100%
voicevox_engine/dev/core/init.py 0 0 coverage-100%
voicevox_engine/dev/core/mock.py 65 2 coverage-97%
voicevox_engine/dev/tts_engine/init.py 0 0 coverage-100%
voicevox_engine/dev/tts_engine/mock.py 28 0 coverage-100%
voicevox_engine/engine_manifest/EngineManifest.py 36 0 coverage-100%
voicevox_engine/engine_manifest/EngineManifestLoader.py 12 0 coverage-100%
voicevox_engine/engine_manifest/init.py 0 0 coverage-100%
voicevox_engine/library_manager.py 92 4 coverage-96%
voicevox_engine/metas/Metas.py 36 0 coverage-100%
voicevox_engine/metas/MetasStore.py 28 1 coverage-96%
voicevox_engine/metas/init.py 0 0 coverage-100%
voicevox_engine/model.py 180 3 coverage-98%
voicevox_engine/morphing.py 71 4 coverage-94%
voicevox_engine/preset/Preset.py 13 0 coverage-100%
voicevox_engine/preset/PresetError.py 2 0 coverage-100%
voicevox_engine/preset/PresetManager.py 80 2 coverage-98%
voicevox_engine/preset/init.py 0 0 coverage-100%
voicevox_engine/setting/Setting.py 9 0 coverage-100%
voicevox_engine/setting/SettingLoader.py 20 0 coverage-100%
voicevox_engine/setting/init.py 0 0 coverage-100%
voicevox_engine/tts_pipeline/init.py 0 0 coverage-100%
voicevox_engine/tts_pipeline/kana_converter.py 88 1 coverage-99%
voicevox_engine/tts_pipeline/mora_mapping.py 7 0 coverage-100%
voicevox_engine/tts_pipeline/phoneme.py 34 0 coverage-100%
voicevox_engine/tts_pipeline/text_analyzer.py 146 6 coverage-96%
voicevox_engine/tts_pipeline/tts_engine.py 267 9 coverage-97%
voicevox_engine/user_dict/part_of_speech_data.py 5 0 coverage-100%
voicevox_engine/user_dict/user_dict.py 146 12 coverage-92%
voicevox_engine/utility/init.py 0 0 coverage-100%
voicevox_engine/utility/connect_base64_waves.py 37 0 coverage-100%
voicevox_engine/utility/core_utility.py 6 0 coverage-100%
voicevox_engine/utility/core_version_utility.py 8 1 coverage-88%
voicevox_engine/utility/mutex_utility.py 13 0 coverage-100%
voicevox_engine/utility/path_utility.py 26 6 coverage-77%
voicevox_engine/utility/run_utility.py 10 7 coverage-30%
TOTAL 2441 533 coverage-78%

Copy link
Contributor

@tarepan tarepan left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM👍

機能を維持しつつ、新しい起動時イベントへ更新されています。good work!


本来はlifespanで使用するオブジェクト ... を初期化

ざっとドキュメント読んだ感じ、強制ではないけど推奨な感じかなと思いました。
uvicorn.run() の前に初期化処理しなくて良くなるのが利点…ぽい?

Copy link
Member

@Hiroshiba Hiroshiba left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM!!

ざっとドキュメント読んだ感じ、強制ではないけど推奨な感じかなと思いました。
uvicorn.run() の前に初期化処理しなくて良くなるのが利点…ぽい?

単純にライフサイクルに乗っけとけば、将来FastAPIに機能が追加されてサーバーをスケーリングできるようになった時とかに便利なのかなぁとかは思いました。
現状に本当にどっちでもいい気がします!

個人的には、仮にコアの初期化とかに失敗するような環境だったとして、エンジンを起動しようとしてからライフサイクルが始まってエラーになるよりも、最初に用意しようとした時に用意できないことを知らせるようにしといた方がメンテナンスが高いような気がしました。
あと単純にstartup関数内で初期化すると、初期化する変数全部がOptionalになったりして不便そうな気がします!

@Hiroshiba Hiroshiba merged commit 0269fac into VOICEVOX:master Mar 22, 2024
4 checks passed
@sabonerune sabonerune deleted the fix/lifespan branch March 23, 2024 03:09
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants