我正在使用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应用的方式是否正确?
答案 0 :(得分:0)
App Engine Standard当前不支持ASGI。
要与ASGI一起使用,您应该使用App Engine Flexible,您可以在其中进一步调整环境。
然后,您可能会在GAE flex文档中找到有关Creating Persistent Connections with WebSockets的指南。