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

通过 Heroku 使用 Django 接收 [Errno 111] 连接调用失败 ('127.0.0.1', 6379)

如何解决通过 Heroku 使用 Django 接收 [Errno 111] 连接调用失败 ('127.0.0.1', 6379)

我在生产环境中运行 Django,我的 websockets 将连接但不会发送任何数据。但是,我确实收到 [Errno 111] Connect call Failed ('127.0.0.1',6379) 作为错误。我听说这是因为我的 settings.py,但到目前为止我还没有找到可靠的解决方法。这是我目前所拥有的。

设置

简介:

web: daphne API.asgi:application --port $PORT --bind 0.0.0.0 -v2
worker: python manage.py runworker background -v2

settings.py:

CHANNEL_LAYERS = {
    "default": {
        "BACKEND": "channels_redis.core.RedisChannelLayer","CONfig": {
            "hosts": [("127.0.0.1",6379)],},}

asgi.py:

application = ProtocolTypeRouter({
    'http': django_asgi_app,'websocket': AllowedHostsOriginValidator(
        AuthMiddlewareStack(
            URLRouter(
                [
                    url('timer',TestConsumer.as_asgi()),]
            )
        )
    ),'channel': ChannelNameRouter({
        'background': BackgroundConsumer.as_asgi()
    })
})

Heroku Redis 服务器连接日志:

2021-07-03T18:33:56.000000+00:00 app[heroku-redis]: source=REdis addon=redis-angular-30850 sample#active-connections=1 sample#load-avg-1m=0.43 sample#load-avg-5m=0.34 sample#load-avg-15m=0.285 sample#read-iops=0 sample#write-iops=0 sample#memory-total=15628108kB sample#memory-free=5542160kB sample#memory-cached=5297476kB sample#memory-redis=333688bytes sample#hit-rate=1 sample#evicted-keys=0

添加了 Heroku 的 Redis 插件,但我没有采取任何进一步的步骤来运行它。但是,它会在其设置中显示其“可用”。

问题/日志

向 Redis 服务器发送信号时,输出[Errno 111] Connect call Failed ('127.0.0.1',6379) 错误。除了简单的连接之外,Websockets 似乎不做任何事情。

日志:

ConnectionRefusedError at /API/1/
[Errno 111] Connect call Failed ('127.0.0.1',6379)
Request Method: PUT
Request URL:    http://example.herokuapp.com/API/1/
Django Version: 3.2.3
Exception Type: ConnectionRefusedError
Exception Value:    
[Errno 111] Connect call Failed ('127.0.0.1',6379)
Exception Location: /app/.heroku/python/lib/python3.8/asyncio/selector_events.py,line 528,in _sock_connect_cb
Python Executable:  /app/.heroku/python/bin/python
Python Version: 3.8.10

我的尝试

  1. 将 redis 主机更改为 "hosts": [("redis",,如此处所述Docker [Errno 111] Connect call failed ('127.0.0.1',6379)
  2. 更改了 procfile,没有任何作用
  3. 尝试在 Heroku 上“运行”Redis 服务器,正如这里提到的https://github.com/django/channels_redis/issues/102 没弄清楚,我认为 Redis 插件自动运行

如果有人有任何提示,我将不胜感激。我认为这是一个非常简单的修复,我只是不理解。

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