我正在编写一个使用RQ进行工作的应用程序。 RQ的Redis实例在Heroku中,但RQ工作者在外部计算机上。他们开始时会建立Redis连接。
如果Heroku移动Redis实例(它可以并且可以移动),那么工作人员将陷入困境,即与不再存在的Redis实例的连接,而与新实例的连接。
我可以使用API从heroku获取redis URL,但是如何让工作人员重新连接?
我正在考虑在启动时获取Redis URL,然后有一个后台线程每N分钟ping通Redis服务器,并在无法与Redis对话时退出。
由于我将有一个流程监控器(马戏团,主管等),因此它将重新启动工作进程。
这合理吗?在Heroku之外运行RQ工作者是否有更常见的最佳实践,但是在Heroku内运行Redis实例?
就此而言,似乎Heroku上的RQ工人必须处理同样的问题。