minimum django/celene/redis在本地运行,但当部署到heroku时,当我在python上运行时,会出现以下错误:
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。有趣的是,我以前可以发誓它是有效的,但现在由于某种原因它不起作用了。
这帮我解决了这个问题,我忘了在项目/init.py中导入芹菜,就像一样
from .celery import app as celery_app
__all__ = ("celery_app",)
一旦您在本地有了一个最小的django-celeni-redis项目设置,以下是如何在heroku:上部署它
-
添加到您的任务.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:芹菜工人--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芹菜redis">
"heroku插件:创建heroku redis-一个最小的django芹菜redis">
"git add.">
"git commit-m"Demo">
"git push heroku master">
"heroku打开&">
"heroku ps:秤工=1">
"heroku run python">
import hello.tasks hello.tasks.add.delay(1, 2)
您应该在应用程序日志中看到运行的任务:"heroku logs-t-p worker">