python - “RedisChannelLayer”对象不可调用
问题描述
我有一个 Django 应用程序我在将此应用程序部署到 Heroku 时使用 Django 通道我收到此错误“RedisChannelLayer”对象不可调用
这是此错误的引用
2020-08-29T19:33:37.543129+00:00 app[web.1]: 2020-08-29 19:33:37,542 DEBUG HTTP b'GET' request for ['10.9.251.250', 35308]
2020-08-29T19:33:37.543586+00:00 app[web.1]: 2020-08-29 19:33:37,543 ERROR Traceback (most recent call last):
2020-08-29T19:33:37.543592+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/daphne/http_protocol.py", line 180, in process
2020-08-29T19:33:37.543593+00:00 app[web.1]: "server": self.server_addr,
2020-08-29T19:33:37.543594+00:00 app[web.1]: TypeError: 'RedisChannelLayer' object is not callable
2020-08-29T19:33:37.543599+00:00 app[web.1]:
2020-08-29T19:33:37.543727+00:00 app[web.1]: 2020-08-29 19:33:37,543 DEBUG HTTP 500 response started for ['10.9.251.250', 35308]
2020-08-29T19:33:37.544107+00:00 app[web.1]: 2020-08-29 19:33:37,543 DEBUG HTTP close for ['10.9.251.250', 35308]
2020-08-29T19:33:37.544398+00:00 app[web.1]: 2020-08-29 19:33:37,544 INFO "10.9.251.250" - - [03/Jan/1970:21:31:20 +0000] "GET /favicon.ico HTTP/1.1" 500 452 "https://belkahla-mohamed-chatapp.herokuapp.com/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.9 Safari/537.36"
2020-08-29T19:33:37.544593+00:00 app[web.1]: 2020-08-29 19:33:37,544 DEBUG HTTP response complete for ['10.9.251.250', 35308]
2020-08-29T19:33:37.544687+00:00 app[web.1]: 10.9.251.250:35308 - - [29/Aug/2020:19:33:37] "GET /favicon.ico" 500 452
这是我的 asgi.py 文件:
import os
import django
from channels.routing import get_default_application
from channels.layers import get_channel_layer
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'ProfilesApp.settings.development')
django.setup()
application = get_default_application()
channel_layer = get_channel_layer()
设置.py
ASGI_APPLICATION = "ProfilesApp.routing.application"
WSGI_APPLICATION = 'ProfilesApp.wsgi.application'
CHANNEL_LAYERS = {
"default": {
"BACKEND": "channels_redis.core.RedisChannelLayer",
"CONFIG": {
"hosts": [os.environ.get('REDIS_URL', 'redis://localhost:6379')],
},
},
}
请让我知道如何解决这个问题,在此先感谢
解决方案
您使用了错误的 asgi 配置,该配置适用于通道 1.x
作为文档状态应该看起来像
""" ASGI entrypoint. Configures Django and then runs the application defined in the ASGI_APPLICATION setting. """ import os import django from channels.routing import get_default_application os.environ.setdefault("DJANGO_SETTINGS_MODULE", "myproject.settings") django.setup() application = get_default_application()
推荐阅读
- node.js - Firebase 函数使用 nodejs 搜索查询实时数据库
- python - 保持一个socket监听python,避免破管错误
- node.js - 我想对 Google 上的操作使用 Firebase 身份验证
- sql - SQL 5 最常借书
- grafana - 重命名 Grafana 指标
- macos - 在 Mac 上为 Mac 应用程序安装配置文件,返回“配置文件不允许此设备”。
- json - swagger中的API文档,需要验证
- keras - 存储为 HDF5 后如何获取原始图像?
- radio-button - Alpaca 表单,每个字段一个单选按钮
- html - 为什么我的背景渐变超出了 Mac 和 ios 的边框?