微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

“ RedisChannelLayer”对象不可调用

如何解决“ 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()

settings.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频道

documentation的状态应为

extension Image {
    func centerCropped() -> some View {
        Color.clear
        .overlay(
            self
            .resizable()
            .scaledToFill()
        )
        .clipped()
    }
}
,

asgi.py应该是这样的:

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()

和ProcFile应该是这样的

web: daphne myproject.asgi:application --port $PORT --bind 0.0.0.0 -v2
chatworker: python manage.py runworker --settings=myproject.settings.production -v2

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。