烧瓶的redis哨兵集成

Flask-Redis-Sentinel的Python项目详细描述


Travis CI

Flask Redis Sentinel支持使用Sentinel连接到Redis,也支持连接到Redis 没有它。

  • 支持Python2.7和3.3+
  • 使用apache license 2.0授权

安装

使用pip安装:

pip install Flask-Redis-Sentinel

基本用法

fromflask_redis_sentinelimportSentinelExtensionredis_sentinel=SentinelExtension()redis_connection=redis_sentinel.default_connection# Later when you create applicationapp=Flask(...)redis_sentinel.init_app(app)

可以使用redis+sentinelflask配置变量配置redis连接参数 URL方案:

redis+sentinel://localhost:26379[,otherhost:26379,...]/mymaster/0
redis+sentinel://localhost:26379[,otherhost:26379,...]/mymaster/0?socket_timeout=0.1
redis+sentinel://localhost:26379[,otherhost:26379,...]/mymaster/0?sentinel_socket_timeout=0.1
redis+sentinel://:sentinel-secret-password@localhost:26379[,otherhost:26379,...]/mymaster/0?sentinel_socket_timeout=0.1

该扩展还支持redis py支持的url方案,用于直接连接到实例而无需sentinel:

redis://[:password]@localhost:6379/0
rediss://[:password]@localhost:6379/0
unix://[:password]@/path/to/socket.sock?db=0

也支持flask和redis样式的配置变量,以便于迁移,但是扩展将 记录不推荐警告

REDIS_HOST = 'localhost'
REDIS_PORT = 6379
REDIS_DB = 0

如果同时存在redis_url和其他变量,则使用url。

使用单个sentinel群集创建多个连接池

fromflask_redis_sentinelimportSentinelExtensionredis_sentinel=SentinelExtension()master1=redis_sentinel.master_for('service1')master2=redis_sentinel.master_for('service2')slave1=redis_sentinel.slave_for('service1')

访问redis py的sentinel实例

fromflask_redis_sentinelimportSentinelExtensionfromflaskimportjsonify,Flaskapp=Flask('test')redis_sentinel=SentinelExtension(app=app)@app.route('/')defindex():slaves=redis_sentinel.sentinel.discover_slaves('service1')returnjsonify(slaves=slaves)

更改日志

v2.0.0

  • 连接现在是线程本地的,以避免redis主故障转移后出现争用情况
  • 删除了对redis{host,port,db}配置变量的支持

v1.0.0

  • 将URL处理代码移动到单独的库中,redis\u sentinel\u url

  • 向后不兼容更改:

    # Old
    redis+sentinel://host:port/service?slave=true
    

    现在应该写为:

    # New
    redis+sentinel://host:port/service?client_type=slave
    

v0.2.0

  • 使用配置变量而不是redis{host,port,db}即使使用了redis url
  • 小重构

v0.1.0

  • 初始版本

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
netbeans根据命名约定返回布尔类的getter的Java名称   java如何在MessageFormat中使用单引号   java如何在整数数组中只对奇数排序,而将偶数保留在其原始位置?   自定义ArrayAdapter中未定义java构造函数   java joda时间格式化程序解析yyyyymmdd(额外一小时)   java Spring引导控制器测试始终返回404   java如何提取类文件以获取该类文件中的类?   JTable java列不会显示   java Selenium Web驱动程序输出错误的Web表行数   当应用程序在mac上打开时,java SWT选项卡项会从页面上消失   java如何将html文件映射到过滤器   swing Java计算一段时间内两点之间的转换   javawebsphere和javax。xml。ws。spi。提供者:提供者组织。阿帕奇。axis2。jaxws。spi。提供者不是子类型   For循环在Java中没有按预期继续?   java如何配置gson以排除0个整数值   java读取一个由tab分隔的文件,并将单词放入ArrayList中   java我需要做什么才能让LiveConnect重新工作?   sqlservermerge2xml&使用java提取这些数据并将其存储在db表中   java如何在模型中添加新对象时通知网格