引发 ConnectionError(self._error_message(e)) kombu.exceptions.OperationalError:连接到 localhost:6379 的错误
Posted
技术标签:
【中文标题】引发 ConnectionError(self._error_message(e)) kombu.exceptions.OperationalError:连接到 localhost:6379 的错误 111。拒绝连接【英文标题】:raise ConnectionError(self._error_message(e)) kombu.exceptions.OperationalError: Error 111 connecting to localhost:6379. Connection refused 【发布时间】:2020-03-13 01:50:25 【问题描述】:minimal django/celery/redis 在本地运行,但是当我在 python 上运行时,部署到 heroku 时出现以下错误:
raise ConnectionError(self._error_message(e))
kombu.exceptions.OperationalError: Error 111 connecting to localhost:6379. Connection
refused.
这是我的应用程序目录中的 tasks.py 文件:
from celery import Celery
import os
app = Celery('tasks', broker='redis://localhost:6379/0')
app.conf.update(BROKER_URL=os.environ['REDIS_URL'],
CELERY_RESULT_BACKEND=os.environ['REDIS_URL'])
@app.task
def add(x, y):
return x + y
Requirements.txt:
django
gunicorn
django-heroku
celery
redis
celery-with-redis
django-celery
kombu
我已将 worker dyno 设置为 1。 有趣的是我可以发誓它以前可以工作,现在由于某种原因它不起作用。
【问题讨论】:
【参考方案1】:曾经,您在本地设置了一个minimal django-celery-redis 项目,下面是您在heroku 上部署它的方法:
添加到你的tasks.py:
import os
app.conf.update(BROKER_URL=os.environ['REDIS_URL'],
CELERY_RESULT_BACKEND=os.environ['REDIS_URL'])
确保你的 requirements.txt 是这样的:
django
gunicorn
django-heroku
celery
redis
添加到您的 Procfile:“worker: celery worker --app=hello.tasks.app”
确保它仍然在本地运行
进入终端:“export REDIS_URL=redis://”
运行“heroku local&”
运行python
import hello.tasks
hello.tasks.add.delay(1,2)
应该返回类似:
<AsyncResult: e1debb39-b61c-47bc-bda3-ee037d34a6c4>
“heroku 应用程序:创建最小 django-celery-redis”
“heroku 插件:创建 heroku-redis -a minimum-django-celery-redis”
“git add .”
"git commit -m "Demo""
“git push heroku 大师”
“heroku 开放&”
"heroku ps:scale worker=1"
“heroku 运行 python”
import hello.tasks
hello.tasks.add.delay(1, 2)
您应该会在应用程序日志中看到正在运行的任务:“heroku logs -t -p worker”
【讨论】:
以上是关于引发 ConnectionError(self._error_message(e)) kombu.exceptions.OperationalError:连接到 localhost:6379 的错误 的主要内容,如果未能解决你的问题,请参考以下文章
mypy 忽略常规方法中的错误,但在 __init__ 中引发错误
Python异常:ConnectionError 10054远程主机强制关闭现有连接
ERROR (ConnectionError): HTTPConnectionPool (Caused by <class 'socket.error'