引发ConnectionError(self._error_message(e))kombu.exceptions.OperationalError:连接到本地主机的错误111:6379。拒绝连接

时间:2019-11-17 15:15:41

标签: django heroku redis celery

最小的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。 有趣的是,我本来可以宣誓它曾经在起作用,但现在由于某种原因它不起作用。

1 个答案:

答案 0 :(得分:0)

一旦您在本地设置了minimal django-celery-redis项目,就可以在heroku上部署它:

  1. 添加到您的task.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:celery 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-celery-redis”

  2. “ heroku插件:创建heroku-redis -a-django-celery-redis”

  3. “ git add”。

  4. “ git commit -m”演示“”

  5. “ git push heroku master”

  6. “ heroku open&”

  7. “ heroku ps:scale worker = 1”

  8. “ heroku运行python”

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