当前位置: 首页 > 知识库问答 >
问题:

带有redis服务器和nginx的Django频道

陈鸿才
2023-03-14

我一直在关注这个http://channels.readthedocs.io/en/latest/getting-started.html

我目前的设置(在添加频道之前)是nginx、uwsgi、django。

在我的本地,我运行所有这一切在一个流浪者框转发端口5000
Django服务器当前运行在0.0.0.0:5000
我的nginx配置监听8000和服务静态文件
它还具有:

location / {
    include uwsgi_params;
    uwsgi_pass unix:{{backend_uwsgi_socket}};
}

在遵循教程的过程中,一切都会正常工作,直到我开始更改设置为止。来自

CHANNEL_LAYERS = {
  "default": {        
    "BACKEND": "asgiref.inmemory.ChannelLayer",        
    "ROUTING": "myapp.routing.channel_routing",
  },
}

CHANNEL_LAYERS = {
 "default": {
    "BACKEND": "asgi_redis.RedisChannelLayer",        
    "CONFIG": {
        #"hosts": [os.environ.get('REDIS_URL', 'redis://localhost:6379')],
        #"hosts": [("redis-server-name", 6379)],           
        "hosts": [("localhost", 6379)],
    },
    "ROUTING": "myapp.routing.channel_routing",
 },
}

所以教程说安装redis-server,然后再次运行命令:
manage.pyrunserver0.0.0.0:80000

如果我关闭nginx并运行它,它会抱怨:

ConnectionError:错误111连接到本地主机:6379。连接被拒绝。

我尝试在我的nginx服务器块中为这个端口添加一个侦听器,然后出现以下错误:

^Cvagrant@vagrant-ubuntu-trusty-64:/srv/myproj/backend$sudo pythonmanage.pyrunserver0.0.0.0:8000
执行系统检查...

系统检查没有发现任何问题(0沉默)。
2017年12月28日-17:10:25
Django版本1.10,使用设置backend.settings
在http://0.0.0.0:8000/
通道层默认(asgi_redis.core.RedisChannelLayer)
退出服务器与CONTROL-C。
2017-12-28 17:10:25,883-INFO-工人-监听通道http.request,websocket.connect,websocket.disconnect,websocket.receive
线程Thread-1中的异常:
Traceback(最近一次调用最后一次):
File"/usr/lib /python2.7/threading.py",第810行,在__bootstrap_inner
self.run()
File"/usr/local/lib/python2.7/dist-包/通道/管理/命令/runserver.py",第176行,在运行
worker.run()
File"/usr/local/lib/python2.7/dist-包/通道/worker.py",第87行,在运行
通道中,内容=self.channel_manylayer.receive_(通道,块=True)
File"/usr/local/lib/python2.7/dist-包/asgiref/base_layer.py",第43行,receive_many
返回self.receive(通道,块)
File"/usr/local/lib/python2.7/dist-包/asgi_redis/core.py",第168行,在接收
结果=连接. blpop(list_names,超时=execute_command('BLPOP',*key)
File"/usr/local/lib/python2.7/dist-包/redis/client. py",第1269行,在blpop
中返回自己。manage.py('BLPOP',*key)
File"/usr/local/lib/python2.7/dist-pack/redis/client. py",第668行,在execute_command
返回自己。parse_response(连接,command_name,**选项)
File"/usr/local/lib/python2.7/dist-包/redis/client. py",第680行,在parse_response
响应=连接。read_response()
File"/usr/local/lib/python2.7/dist-包/redis/link. py",第624行,在read_response
响应=自己。_parser。read_response()
文件"/usr/local/lib/python2.7/dist-包/redis/连接. py",第292行,read_response
(str(byte), str(响应))
无效响应:协议错误:

打印完成后,它会不断打印以下消息:

错误-服务器-尝试接收消息时出错:协议错误:


我正在努力寻找这个问题的答案,并且在一些不同的教程/例子后让自己感到困惑。
我知道这将是我错过了一些明显的东西,或者误解了一些东西。

任何建议或帮助都将不胜感激。

共有1个答案

羿易安
2023-03-14

ConnectionError:错误111连接到本地主机:6379。连接被拒绝。

6379是redis服务器应该运行的端口。您不应该配置nginx来监听它。

您发布的stacktrace意味着django服务器正在尝试连接到redis(端口6379),它不喜欢响应(因为nginx在那里侦听,而不是redis)。

 类似资料:
  • 我试图让在Docker容器中运行,然后通过NGINX主机访问它。初始的加载,但无法连接到开发服务器的Web套接字连接。 VM47:35到“ws://example.com/sockjs-node/834/izehemiu/WebSocket”的WebSocket连接失败:WebSocket握手过程中出错:意外响应代码:400 我使用以下配置。

  • 我尝试用laravel echo服务器和套接字创建实时应用程序。io,但客户端未成为消息 这是我的代码: .环境 配置/queue.php config/database.php 路线/频道。php src/echo。js 活动/MessagePosted.php 消息控制器。php 在Redis cli PING命令return PONG中安装了Redis服务器。我使用php artisan q

  • 问题内容: 我试图找出有关在使用HipHop运行php应用程序或什至是c ++编译的php应用程序时可以利用的硬件的更多信息。我想设置一个微型服务器并使用GPU来帮助CPU处理请求… 任何人? 问题答案: 仅PHP本身就无法利用GPU。最近在php内部开发人员列表中对此进行了讨论。 请记住,GPU在某些类型的工作负载上表现出色,而对于其他工作负载却不那么出色。PHP无法真正利用GPU加速功能,因为

  • Redis 服务器 Redis 服务器命令主要是用于管理 redis 服务。 实例 以下实例演示了如何获取 redis 服务器的统计信息: Redis 服务器命令 Redis Bgrewriteaof 命令 Redis Bgrewriteaof 命令用于异步执行一个 AOF(AppendOnly File) 文件重写操作。重写会创建一个当前 AOF 文件的体积优化版本。 即使 Bgrewritea

  • 我有一个Java程序,安装在一台旧的Ubuntu机器上,使用javax.mail发送邮件。然而,那台机器坏了,我现在正在一台新的CentOS机器上运行同样的Java应用程序。 但是,当尝试使用mail.smtp.host=127.0.0.1发送电子邮件时,我得到一个错误“MessagingException:501语法:HELO hostname”。 我猜邮件服务器尚未在此CentOS中激活。 如

  • 我有一个运行Ubuntu的服务器,安装了Redis和Docker。我正在创建托管在Docker容器中的服务。如何将Docker容器中运行的服务与Docker外部运行的Redis连接起来? 我可以ping服务器。ioredis驱动程序无法连接到redis。错误:connect ECONREFUSE:6379