我正在使用 Django 开发一个应用程序,我最初使用 WSGI 环境将它部署在 Google Cloud Platform 上,现在我已经在应用程序中添加并使用了通道,因此我必须从 WSGI 转移到 ASGI,但是我在部署时遇到错误当我使用 ASGI 环境时到谷歌云平台
我得到了错误: respiter = self.wsgi(environ, resp.start_response) TypeError: __call__() 需要 2 个位置参数,但给出了 3 个
当我想使用 ASGI environmnet 时,我注释了 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()"""
主.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 环境?如果我在显示我的代码时遗漏了一些东西,我也可以证明,我不知道问题是什么,我部署 ASGI 应用程序的方式是否正确?