部署应用Django Rest时在运行ASGI环境中出现问题

时间:2019-12-30 08:31:43

标签: django google-cloud-platform django-channels django-wsgi asgi

我正在使用django开发应用程序,最初是使用wsgi环境将其部署在Google云端平台上,现在我已经在应用程序中添加了一些内容,并使用了一些渠道,因此我不得不从wsgi转换为asgi,但是却遇到了错误使用Asgi环境时部署到GCP时 我收到错误消息: respiter = self.wsgi(environ,resp.start_response)TypeError:__call __()接受2个位置参数,但给出了3个

当我想使用ASGI env时,我评论了WSGI文件的所有内容,这是我的相关代码:

ASGI文件:

import os
import django
from channels.routing import get_default_application

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'Frames.settings')
django.setup()
application = get_default_application()

WSGI文件(我已评论):

"""
WSGI config for Frames project.

It exposes the WSGI callable as a module-level variable named ``application``.

For more information on this file, see
https://docs.djangoproject.com/en/2.2/howto/deployment/wsgi/


import os

from django.core.wsgi import get_wsgi_application

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'Frames.settings')

application = get_wsgi_application()"""

main.py

from Frames.asgi import application
app = application

Settings.py(主要更改,我已经从settings.py中删除了所有与WSGI相关的信息)


ASGI_APPLICATION = "Frames.routing.application"

CHANNEL_LAYERS={
    "default":{
      "BACKEND": "channels_redis.core.RedisChannelLayer",
      "CONFIG": {
                "hosts": [("localhost", 6379)],
            },
    },
}

如何运行ASGI env?如果我在显示代码时错过了一些东西,我还可以表明,我不明白问题出在哪里,我部署ASGI应用的方式是否正确?

1 个答案:

答案 0 :(得分:0)

App Engine Standard当前不支持ASGI。

要与ASGI一起使用,您应该使用App Engine Flexible,您可以在其中进一步调整环境。

然后,您可能会在GAE flex文档中找到有关Creating Persistent Connections with WebSockets的指南。