Я новичок в веб-разработке, поэтому я благодарен умным людям за помощь. Я пытаюсь переключиться с gunicorn на Daphne для моего приложения Django на GAE Flex, поскольку мне нужно использовать Django каналы.
Ранее сайт работал нормально с gunicorn в качестве точки входа (в файле app.yaml). Я просто заменил его на daphne (я бы хотел избежать сложности, изменив nginx конфигурации, Unix сокетов и т. Д. c, так что я думаю, что я в порядке с Дафной, обслуживающей запросы HTTP и ws ). Итак, теперь мой app.yaml выглядит следующим образом:
runtime: python
env: flex
runtime_config:
python_version: 3
entrypoint: daphne -b 0.0.0.0 -p 8001 my_project_name.asgi:application
Я уже сделал файл .asgi рядом с моим файлом .wsgi и объявил приложение там.
В файле require.txt I Мы убедились, что пакеты daphne (2.4.1) и asgiref (3.2.3) являются самыми последними версиями.
Наконец, когда я выполняю 'gcloud app deploy', развертывание происходит гладко, и в журналах сборки я можно увидеть запуск Дафни:
Step #1: Step 9/9 : CMD exec daphne -b 0.0.0.0 -p 8001 my_project_name.asgi:application
Step #1: ---> Running in c6f3762a5ce2
Но я получаю ошибку 502 Bad Gateway на сайте с "nginx" в следующей строке.
Вопрос: Что я делаю не так? Это потому, что Дафни не обслуживает http-запросы? Должен ли я сделать что-то другое, чтобы Дафна обслуживала HTTP-запросы? Прямо сейчас мои http-пути обслуживаются в Django модулем urls.py, а не модулем routing.py (который заботится только о ws-запросах). Должен ли я что-то изменить?
Если вы считаете, что разделение входящих запросов и отправка http на gunicorn - единственный способ, опишите эти шаги. Что произойдет с точкой входа в файле app.yaml, если я это сделаю?
Мои усилия на данный момент: Я вижу много вопросов по SO (например, this и это ) и другие онлайн-уроки о том, как использовать daphne на автономных linux машинах, но не на механизмах приложений, таких как GAE Flex. Единственный пост, связанный с GAE, который я видел, был это , но это проблема, отличная от моей.