Ошибка 111, подключаемая к localhost: 6379. В соединении отказано. Django Heroku

Я могу запустить redis локально, и все работает.

Однако, когда я развертываю в heroku, я получаю эту ошибку:

Error 111 connecting to localhost:6379. Connection refused. 

Я создал Procfile с …

 web: gunicorn odb.wsgi --log-file - worker: python worker.py 

У меня есть файл worker.py …

 import os import urlparse from redis import Redis from rq import Worker, Queue, Connection listen = ['high', 'default', 'low'] redis_url = os.getenv('REDISTOGO_URL') if not redis_url: raise RuntimeError('Set up Redis To Go first.') urlparse.uses_netloc.append('redis') url = urlparse.urlparse(redis_url) conn = Redis(host=url.hostname, port=url.port, db=0, password=url.password) if __name__ == '__main__': with Connection(conn): worker = Worker(map(Queue, listen)) worker.work() 

В конфигурации heroku появляется переменная REDISTOGO_URL.

Redis to go – это установленное дополнение для моего приложения.

Должен ли REDISTOGO_URL быть определен в settings.py? Почему герой пытается подключиться к локальному хосту, когда он даже не определен в worker.py?

5 Solutions collect form web for “Ошибка 111, подключаемая к localhost: 6379. В соединении отказано. Django Heroku”

Не может быть напрямую связано с вашим вопросом, но я столкнулся с такой же ошибкой, и оказалось, что на моей системе пакет redis-server не был установлен.

Проблема была решена с помощью sudo apt-get install redis-server

Оказывается, мне нужно было создать такие вещи, чтобы он работал на Heroku.

 redis_url = os.getenv('REDISTOGO_URL') urlparse.uses_netloc.append('redis') url = urlparse.urlparse(redis_url) conn = Redis(host=url.hostname, port=url.port, db=0, password=url.password) 

Если вы используете django_rq, такая конфигурация будет работать для вас:

 RQ_QUEUES = { 'default': { 'HOST': 'localhost', 'PORT': '6379', 'URL': os.getenv('REDISTOGO_URL', 'redis://localhost:6379'), # If you're 'DB': 0, 'DEFAULT_TIMEOUT': 480, } } 

Это сделает эту работу в вашей местной среде, а также на Heroku!

Ошибка 111 вызывается, когда приложение не может связаться с Redis. У меня была такая же проблема, следуя учебному курсу Heroku Django Channels . Файл settings.py должен читать:

 CHANNEL_LAYERS = { "default": { "BACKEND": "asgi_redis.RedisChannelLayer", "CONFIG": { "hosts": [os.environ.get('REDISCLOUD_URL', 'redis://localhost:6379')], }, "ROUTING": "chat.routing.channel_routing", }, } 

REDISCLOUD_URL вместо REDIS_URL .

Убедитесь, что Redis установлен на сервере Heroku.

Решение – sudo apt-get install redis-server . Не забудьте запустить сервис с помощью sudo service redis-server start и вы можете использовать команду sudo service redis-server {start|stop|restart|force-reload|status} для справки

  • Не удается запустить мастер в учебнике Heroku с помощью Python
  • Модуль 'site' не найден при развертывании в Heroku
  • Проблемы с заказчиком LIBFFI Heroku buildpack
  • Как установить внутренние требования для проектов Python Heroku?
  • Как заморозить требования, которые не могут быть удовлетворены на местном уровне?
  • Приложение Flask вызывает ошибку 500 без исключения
  • Перенаправить HTTP на HTTPS на Flask + Heroku
  • Загрузка больших файлов в AWS S3 Bucket с Django на Heroku без тайм-аута запроса 30s
  • Python - лучший язык программирования в мире.