我是Web开发的新手,所以我感谢这里聪明的人的帮助。由于我需要使用Django Channels,因此我试图将GAE Flex上的Django应用程序从gunicorn切换到Daphne。
以前,该站点可以使用gunicorn作为入口点(在app.yaml文件中)运行良好。我只是用daphne替换了它(我想通过更改nginx配置,Unix套接字等来避免复杂性,所以我想Daphne可以同时服务于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
我已经在.wsgi文件旁边制作了一个.asgi文件,并在那里声明了一个应用程序。
在requirements.txt中,我已经确保daphne(2.4.1)和asgiref(3.2.3)软件包是最新版本。
最后,当我执行“ gcloud应用程序部署”时,部署似乎顺利进行,并且在构建日志中我可以看到daphne开始:
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请求吗?我是否应该做其他事情使Daphne服务HTTP请求?现在,我的http路径在Django中由urls.py模块提供,而不是由routing.py模块提供(仅处理ws请求)。我应该以某种方式改变它吗?
如果您认为拆分传入请求并将http发送到gunicorn是唯一的方法,请描述这些步骤。如果我这样做,app.yaml文件中的入口点会怎样?
到目前为止,我的努力:我在SO上看到了很多问题(例如this和this),以及在线上有关如何在独立的Linux机器上使用daphne的其他教程。不在GAE Flex等应用引擎上。我看到的唯一与GAE相关的帖子是this,但这与我的问题不同。