我在这里看过类似的问题,但我无法弄清楚我的问题。 我的烧瓶应用程序在 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 服务器? 我的程序文件是:
web: flask db upgrade; flask translate compile; gunicorn microblog:app
worker: rq worker microblog-tasks
运行"heroku config:get REDIS_URL"表明env var REDIS_URL确实是在heroku中设置的。 后台任务是否需要多个测功机? 我的应用程序在本地没有问题,只是在 heroku 上部署时。
单独但相关的问题:redis、redistogo 和 rediscloud 之间有什么区别? 什么时候会使用它们中的每一个? 真的很感谢任何帮助。
我的文章中实际上有一个遗漏,对此我深表歉意。
启动 RQ 工作线程的命令需要包含 Redis 的连接 URL:
worker: rq worker -u $REDIS_URL microblog-tasks