带有redis的简单分布式排序集

redset的Python项目详细描述


PyPI versionbuild statusCoverage Status

你可能不需要像芹菜或RQ这样的重量级食品。维护AMQP服务器 可能是杀伤力太强了。有一种更简单,更容易的分配工作的方法。

redset提供由redis支持的简单、通用的排序集,可以用来 协调分布式系统和分配工作。不像更普通的 分发库,如芹菜或rq,redset避免重复工作 通过维护一组任务而不是一个列表或队列来实现某些用例。 它使用了一个非常简单的接口,这对python来说是很自然的。

redset当前在野外用于执行类似于

  • 维护要处理的流式更新的高吞吐量工作队列
  • 为一个多生产者、多消费者的刮擦架构提供动力 同样的工作两次
  • 维护一组简单的、跨流程的“已查看”项,每个项都有一个 ttl
  • 安排社会服务分析的非重复定期投票

功能

  • 没有要运行的工作进程,没有要监视的大型AMQP服务
  • 对多个生产商和消费者安全
  • 使用序列化程序无缝、简单地使用python对象
  • 零依赖项:提供一个实现 redis.client.Redis接口,我们不会问任何问题。
  • 简单易读的实现
  • 模拟python的本机set接口
  • 经过战斗测试
  • 与python 3兼容

简单示例

importjsonimportredisfromredsetimportTimeSortedSetr=redis.Redis()ss=TimeSortedSet(r,'important_json_biz',serializer=json)ss.add({'foo':'bar1'})ss.add({'foo':'bar2'})ss.add({'foo':'bar3'})ss.add({'foo':'bar3'})len(ss)# 3# ...some other process Ass.peek()# {'foo': 'bar1'}ss.pop()# {'foo': 'bar1'}# ...meanwhile in process B (at exactly same time as A's pop)ss.take(2)# [{'foo': 'bar2'}, {'foo': 'bar3'}]

文档

Here

关于

这个软件是在Percolate开发的, 我们用它来做各种需要维护的事情 跨流程边界同步的事情集。通用用例 使用redset来协调重复的时间敏感任务 可能会生成请求。

redset对消费者的外表和行为不感兴趣。想拥有 一个由主管管理的普通python消费者?好的。希望能够 从芹菜工作中弹出项目?伟大的。红头发没有发言权 在何处或如何使用:机制,而不是策略。

使用概念

redset.SortedSet及其子类可以用几个 值得注意的参数。

指定序列化程序

因为redis只存储原语数字和字符串,所以 序列化和反序列化是生成redset的关键部分。 在python中使用简单。

可以传递一个serializer实例(它遵循 redset.interfaces.Serializer接口,尽管它不需要子类 it)自动处理由 红头发。

指定记分符

指定如何为要添加的项生成分数的可调用项。 也可以作为scorer传递给sortedset的构造函数。这个 callable接受一个参数,即itemobject(即item 在序列化之前)被“评分”。

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

推荐PyPI第三方库


热门话题
分别使用椭圆曲线密码对文本消息进行java加密和解密   java如何将JTable滚动到特定值?   java JSP登录注销简单web应用程序,使用bean在数据库中存在数据时返回false   java无法编译,未设置类路径,包不存在?   java为什么这一变量会受到影响?   集合为什么Java在Map中没有putIfAbsent(key,supplier)方法?   安卓在Java中计算仿真时间   java初始化方法在主类中的指定方法之前运行   java如何在hadoop的reduce中将genericWritable恢复为用户定义的可写?   如何使用java替换pdf中的文本   参数不适用于ASP服务器的java HttpPost   创建对象时的java NullPointerException   Java JPanel中的swing图形有问题,但它在一个框架中工作   java Android Studio在硬件设备上运行时出错   google api类路径的java空指针异常   java如何将InputStream转换为DataHandler?   java在多个Jetty服务器之间共享连接池