Джанго + Увикорн

Я пытаюсь использовать Django 3.0 с Uvicorn и получаю это при запуске:

INFO:     Started server process [96219]
INFO:     Waiting for application startup.
INFO:     ASGI 'lifespan' protocol appears unsupported.
INFO:     Application startup complete.

Я мог бы отключить продолжительность жизни с помощью флага --lifespan off, но есть ли способ заставить его работать с Django? Быстрый поиск срока жизни Django +, похоже, ничего не возвращает.


person aroooo    schedule 19.04.2020    source источник


Ответы (2)


Нет, протокол lifespan не работает с Django 3.0.

См. Этот билет: https://code.djangoproject.com/ticket/31508

person Kuba Misiorny    schedule 04.05.2020

Вот начальная настройка, которую я использовал с django 3.1 / 3.2

РЕДАКТИРОВАТЬ: некоторые приблизительные тесты производительности: https://github.com/allen-munsch/benchmark-django-fastapi

старая версия

your_django/old_wsgi.py:

import os

from django.core.wsgi import get_wsgi_application
from dj_static import Cling

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "your_django.settings")

application = Cling(get_wsgi_application())

Ранее запускался как:

newrelic-admin run-program gunicorn your_django.old_wsgi \
-k eventlet --log-file - --timeout 60

новая версия

your_django/asgi.py:

import os

from django.core.asgi import get_asgi_application
from django.contrib.staticfiles.handlers import ASGIStaticFilesHandler

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "pm.settings")

application = ASGIStaticFilesHandler(
    get_asgi_application()
)

И бежать

gunicorn your_django.asgi --log-level=debug -k uvicorn.workers.UvicornWorker \
--log-file - --timeout 60

# OR for local dev

uvicorn --reload your_django.asgi

связанные с:

person jmunsch    schedule 27.04.2021