![](/img/trans.png)
[英]Cannot connect to redis://localhost:6379/0: Error 111 connecting to localhost:6379. Connection refused
[英]raise ConnectionError(self._error_message(e)) kombu.exceptions.OperationalError: Error 111 connecting to localhost:6379. Connection refused
最小的 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
要求.txt:
django
gunicorn
django-heroku
celery
redis
celery-with-redis
django-celery
kombu
我已将工人测功机设置为 1。有趣的是,我可以发誓它以前可以工作,但现在由于某种原因它不起作用。
曾经,您在本地设置了一个最小的 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:“工人:celery 工人 --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 commit -m "演示""
“git push heroku 主”
“heroku 打开&”
“heroku ps:规模工人=1”
“heroku 运行 python”
import hello.tasks hello.tasks.add.delay(1, 2)
您应该会在应用程序日志中看到正在运行的任务:“heroku logs -t -p worker”
这为我解决了,我忘记在 project/ init .py 中导入 celery 像这样
from .celery import app as celery_app
__all__ = ("celery_app",)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.