我看过这里类似的问题的提问和回答,但无法解决我的问题。我的Flask应用在Heroku上部署时无法连接到我的Heroku Redis实例。在我的Heroku日志中,我得到了以下内容:
2018-05-10T20:36:12.520794+00:00 heroku[web.1]: Starting process with command `flask db upgrade; flask translate compile; gunicorn microblog:app`
2018-05-10T20:36:12.705812+00:00 heroku[worker.1]: Starting process with command `rq worker microblog-tasks`
2018-05-10T20:36:13.385204+00:00 heroku[worker.1]: State changed from starting to up
2018-05-10T20:36:15.060614+00:00 heroku[worker.1]: Process exited with status 1
2018-05-10T20:36:15.080485+00:00 heroku[worker.1]: State changed from up to crashed
2018-05-10T20:36:14.989923+00:00 app[worker.1]: Error 111 connecting to localhost:6379. Connection refused.
为什么我的工作进程非要连接到我本地的Redis服务器?我的Procfile文件如下:
web: flask db upgrade; flask translate compile; gunicorn microblog:app
worker: rq worker microblog-tasks
运行"heroku config:get REDIS_URL"命令可以显示在heroku中确实设置了环境变量REDIS_URL。是否需要多个dyno来执行后台任务?我在本地应用程序上没有问题,只是在部署到heroku时出现问题。
另一个相关的问题:redis、redistogo和rediscloud之间有什么区别?何时使用它们中的每一个?非常感谢任何帮助。
Config.REDIS_URL
的值吗? - Miguel GrinbergProcfile
中的第二行更改为worker: rq worker -u $REDIS_URL microblog-tasks
。看起来我在Heroku示例中错过了URL,在接下来的Docker示例中有提到。 - Miguel Grinberg