将 Django/websocket/redis 项目部署到 heroku 的问题

时间:2021-03-25 04:33:44

标签: django heroku websocket redis django-channels

我有一个 Django 项目,它在我的机器上运行良好,它使用 redis 和几个工人来利用 websockets 并提供不断更新的地铁时间。它在我的机器上运行良好,但是当我部署它时,我在 Heroku 上记录了类似这样的错误:

2021-03-25T04:23:19.462596+00:00 app[worker2.1]: [2021-03-25 04:23:19,462: ERROR/MainProcess] beat: Connection error: Error 111 connecting to localhost:6379. Connection refused.. Trying again in 32.0 seconds...
2021-03-25T04:23:51.493083+00:00 app[worker2.1]: [2021-03-25 04:23:51,492: ERROR/MainProcess] beat: Connection error: Error 111 connecting to localhost:6379. Connection refused.. Trying again in 32.0 seconds...
2021-03-25T04:22:11.000000+00:00 app[heroku-redis]: source=REDIS addon=redis-concentric-76659 sample#active-connections=1 sample#load-avg-1m=0.23 sample#load-avg-5m=0.51 sample#load-avg-15m=0.42 sample#read-iops=0 sample#write-iops=0.061111 sample#memory-total=15629040kB sample#memory-free=7601200kB sample#memory-cached=3699616kB sample#memory-redis=326704bytes sample#hit-rate=1 sample#evicted-keys=0
2021-03-25T04:24:23.524980+00:00 app[worker2.1]: [2021-03-25 04:24:23,524: ERROR/MainProcess] beat: Connection error: Error 111 connecting to localhost:6379. Connection refused.. Trying again in 32.0 seconds...

我已经通过 heroku run bash 安装并启动了 redis,并且端口是正确的。可能是什么问题呢?如果有任何有用的信息,我很乐意更新。

更新以从 SETTINGS.PY 添加详细信息:

CHANNEL_LAYERS = {
    'default': {
        'BACKEND': 'channels_redis.core.RedisChannelLayer',
        'CONFIG': {
            'hosts': [env('REDIS_URL')]
        }
    }
}

更新以添加 PROCFILE 代码:

web: daphne main_app.wsgi:application --port $PORT --bind 0.0.0.0 -v2
worker: celery -A main_app worker -l INFO
beat: celery -A main_app beat -l INFO

1 个答案:

答案 0 :(得分:0)

试试这个:

使用以下代码更新 procfile。

Procfile

web: daphne <Project Name>.asgi:application --port $PORT --bind 0.0.0.0 -v2
chatworker: python manage.py runworker --settings=<Project Name>.settings -v2

还要检查 daphne 是否列在您的 requirements.txt 文件中。如果不是,则添加任何等于或大于 3.0.1 的版本。