Flask应用无法连接到Heroku Redis

3

我看过这里类似的问题的提问和回答,但无法解决我的问题。我的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之间有什么区别?何时使用它们中的每一个?非常感谢任何帮助。


你在应用程序中添加了日志来确保从REDIS_URL环境变量正确导入Config.REDIS_URL项吗?日志显示连接将前往localhost:6379,因此可能的问题是Redis正在连接到默认服务URL。 - Miguel Grinberg
感谢您的回复。我不明白为什么Config.REDIS_URL无法正确地从REDIS_URL环境变量中导入。既然它对您有效,您能否向我展示在heroku日志中应该看到什么? - Rohan Kadakia
我目前没有将应用程序部署到Redis队列中。你没有回答我的问题。你有检查过Config.REDIS_URL的值吗? - Miguel Grinberg
其实,我想我知道发生了什么。尝试将Procfile中的第二行更改为worker: rq worker -u $REDIS_URL microblog-tasks。看起来我在Heroku示例中错过了URL,在接下来的Docker示例中有提到。 - Miguel Grinberg
现在它可以工作了。谢谢,Miguel!!如果你把这个作为答案,我会接受它的。 - Rohan Kadakia
显示剩余2条评论
1个回答

1

实际上,我的文章中有一个遗漏,我为此道歉。

启动RQ工作进程的命令需要包括Redis的连接URL:

worker: rq worker -u $REDIS_URL microblog-tasks

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接