最小的django / celery / redis在本地运行,但是当我在python上运行时,将其部署到heroku时会出现以下错误:
raise ConnectionError(self._error_message(e))
kombu.exceptions.OperationalError: Error 111 connecting to localhost:6379. Connection
refused.
这是我的应用程序目录中的task.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
我已将工人dyno设置为1。 有趣的是,我本来可以宣誓它曾经在起作用,但现在由于某种原因它不起作用。
答案 0 :(得分:0)
一旦您在本地设置了minimal django-celery-redis项目,就可以在heroku上部署它:
添加到您的task.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”
确保它仍在本地运行
进入终端:“导出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-django-celery-redis”
“ git add”。
“ git commit -m”演示“”
“ git push heroku master”
“ heroku open&”
“ heroku ps:scale worker = 1”
“ heroku运行python”
import hello.tasks
hello.tasks.add.delay(1, 2)
您应该在应用程序日志中看到正在运行的任务:“ heroku logs -t -p worker”