rq是python中基于redis的消息队列,1.0版本只支持redis的単连接方式,即:
![](https://img.haomeiwen.com/i9279617/8fa0d3fa1397dae9.png)
但是这种连接方式是不安全的,不能满足生产环境对于安全性能的要求,因此需要使用sentinel连接redis。
官方文档上也给出了如何使用sentinel连接rq,如下所示:
![](https://img.haomeiwen.com/i9279617/697e6ca873b34918.png)
但是说法不够明确,只是说需要配置文件中加一个名为SENTINEL的字典,但是未说明在哪里配置,网上也没有相关的资料,
rq的github中selwin关于sentinel如何使用的提问,他都让提问者去看#808的回答,因为selwin合并这个Issue提供的代码,实现了对sentinel的支持,更改代码如下:
![](https://img.haomeiwen.com/i9279617/4bf369f23e9f53da.png)
因此,rq是肯定可以支持sentinel的,但是作者依旧没有给出明确的使用方式(作者很懒或者认为这个很简单)。
至于如何在配置文件中配置SENTINEL字典,我在看了n多资料之后,依旧没有头绪,因为修改系统的配置文件,并不能传递到rq中去。
所以我花了两个小时,看了rq中sentinel相关的代码(主要是cli文件下的),发现有一个函数get_redis_from_config,该函数的参数和介绍如下:
![](https://img.haomeiwen.com/i9279617/cf8020e8f6a2a85d.png)
因此,确定可以使用该函数传递SENTINEL。
连接代码如下:
![](https://img.haomeiwen.com/i9279617/3069caecfe009fbb.png)
经测试,可实现rq的哨兵连接。
网友评论