引发ConnectionError(self.error_message(e))kombu.exceptions.Ope



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:上部署它

  1. 添加到您的任务.py:

    import os
    app.conf.update(BROKER_URL=os.environ['REDIS_URL'],
    CELERY_RESULT_BACKEND=os.environ['REDIS_URL'])
    
  2. 确保你的requirements.txt是这样的:

    django
    gunicorn
    django-heroku
    celery
    redis
    
  3. 添加到您的Procfile中:"worker:芹菜工人--app=hello.tasks.app">

  4. 确保它仍然在本地上运行

  5. 进入终端:"导出REDIS_URL=REDIS://">

  6. 运行"heroku local&">

  7. 运行python

    import hello.tasks
    hello.tasks.add.delay(1,2)
    

应该返回类似以下内容:

<AsyncResult: e1debb39-b61c-47bc-bda3-ee037d34a6c4>
  1. "heroku应用程序:创建最小django芹菜redis">

  2. "heroku插件:创建heroku redis-一个最小的django芹菜redis">

  3. "git add.">

  4. "git commit-m"Demo">

  5. "git push heroku master">

  6. "heroku打开&">

  7. "heroku ps:秤工=1">

  8. "heroku run python">

    import hello.tasks
    hello.tasks.add.delay(1, 2)
    
  9. 您应该在应用程序日志中看到运行的任务:"heroku logs-t-p worker">

相关内容

  • 没有找到相关文章

最新更新