起因:

     最近在写业务数据监控,既然是监控,那肯定是有不同时间区间的监控动作,放在linux下的crontab有些不合适了,因为有不同的函数要触犯,我不能为这堆函数定制一堆main()吧。用一些开源的计划任务工具,不是很让人满意。 在社区找了一些不靠谱的模块,我是个纠结的人,特别喜欢看别人的实现,然后来喷 ! O(∩_∩)O~)   结果,正如我一开始想到的结果,他们的实现还真是很有些蛋疼,用某人的话来说,特sb的实现。居然有好几个是你有几个任务,就给你开几个线程,然后sleep,当然这些动作对于上层接口层是看不到。但是像我这种几百个任务要监控的,那该如何是好? apscheduler 不错,只是实现偏复杂一些,索性自己实现了。 

关于python dict过期失效的实现,原文地址 http://xiaorui.cc/?p=1913

那说了这么多废话,我为什么会需要一个可以过期的dict?  我实现的这个高性能计划任务管理系统,是用Crontab模块识别时间,比如匹配 */1 * * * * ,当小于1s的时候,我就会扔给MQ,但是我扫描我的任务的间隔也是0.1,也就是说,我很有可能会把这任务多次的提交给消费者。  这时候,我就需要一个中间层,可以过滤这些多余的任务,好避开扫描时间。


又tm废话扯远了…. ….

总之,我特别想实现像redis expire那样的功能,基于key级别实现,撇开性能不谈,expiredict这模块比较适合有过期过滤需求的,不用自己再费心的去判断时间。

简单说下,redis对于过期失效的内部实现,实际上,Redis 删除失效主键的方法主要有两种:
消极方法(passive way),在主键被访问时如果发现它已经失效,那么就删除它
积极方法(active way),周期性地从设置了失效时间的主键中选择一部分失效的主键删除

我现在用的方法是消极的方法,积极的方法我也想过,因为expiredict本身是一个嵌入的模块,没必要在开启一个线程来控制这些东西。

项目名

expiredict


介绍

python的一个小模块,支持key的过期失效及map个数的dict,涵盖所有常用的dict方法。

New Future 1. support len 2. support clear

To Do List

1. logging 终端打印

GITHUB:

https://github.com/rfyiamcool/expiredict

PYPI:

https://pypi.python.org/pypi/expiredict

下面是expiredict的使用方法,很简单构建一个类似dict的对象,就可以直接用了,比原生的dict多了过期时间及大小限制。



对Python及运维开发感兴趣的朋友可以加QQ群 : 478476595 !!!
{ 2000人qq大群内有各厂大牛,常组织线上分享及沙龙,对高性能及分布式场景感兴趣同学欢迎加入该QQ群 }

另外如果大家觉得文章对你有些作用!   帮忙点击广告. 一来能刺激我写博客的欲望,二来好维护云主机的费用.
如果想赏钱,可以用微信扫描下面的二维码. 另外再次标注博客原地址  xiaorui.cc  ……   感谢!
暂无相关产品