ASGI 'lifespan' protocol appears unsupported.
djangoで作ったプロジェクトをデプロイしたとき際、logに以下のinfoが表示された。
INFO
[2024-07-06 18:52:18 +0900] [86] [INFO] Waiting for application startup.
INFO
[2024-07-06 18:52:18 +0900] [86] [INFO] ASGI 'lifespan' protocol appears unsupported.
INFO
[2024-07-06 18:52:18 +0900] [86] [INFO] Application startup complete.
この"ASGI 'lifespan' protocol appears unsupported."は無視して構わないが、とりあえず表示されないようにしたい。
mysite/
├mysite/
| └#settings.pyなど
├myapp.py/
├manage.py
└#その他ファイル
の様なディレクトリ構造でのDjangoプロジェクトだとする。
settings.pyが含まれているmysite/ディレクトリにworkers.pyを作成し、以下のコードを記載する。
# mysite/workers.py
from typing import Any, Dict
from uvicorn.workers import UvicornWorker as BaseUvicornWorker
class UvicornWorker(BaseUvicornWorker):
CONFIG_KWARGS: Dict[str, Any] = {"loop": "auto", "http": "auto", "lifespan": "off"}
そしてgunicornを用いたプロジェクトの実行コマンドを下記のようにする。
python -m gunicorn vtoh.asgi:application -k mysite.workers.UvicornWorker
これで "ASGI 'lifespan' protocol appears unsupported." が表示されなくなる。