前言
从2015年转行程序员至今也有两年多了,当初自学的java却误打误撞进了python的坑,入职之后一天java也没有写过,或许这可以理解成缘分吧,哈哈!使用python工作久了,随手写一些小工具再所难免,不知不觉,我的工具包也增长到了几千行代码。其中有的函数依照别人的代码改写,也有的源于自己的灵感,我自认为还是挺好用的。现在统一规整后做成pip包,拿出来分享给大家使用。
函数都很小巧,代码实现相对简单,风格比较自由,尽可能不依赖其它安装包,极个别的工具依赖一些特定的驱动程序,比如redis,kafka, psutil,如果自己的项目没有相关需求,那么可以将需要的方法,类复制放到自己的项目中,不必完全安装ShichaoMa/toolkit。放心,我是不会追究版权的。
正文开始
安装toolkity
有朋友可能会想为什么不叫toolkit,我,也是那么想的。可是名字被别人占用了肿么办,只能在后面加个y,看起来正式而不失一点小俏皮。
安装完毕,来跟我学习几个常用函数的使用方法吧。
Timer简单好用的计时器
有时我们想对我们写的代码执行时间进行统计,通常我们会使用如下代码:
现在有了timer,一切都变的简单啦
同时,你还可以指定开始时间
ExceptContext异常捕获上下文
通常我们想捕获异常时,会写如下代码
现在我们可以用ExceptContext简单实现
其中ExceptContext接收4个参数
:param exception: 指定要监控的异常, 默认为Exception
:param func_name: 可以选择提供当前所在函数的名称,回调函数会提交到函数,用于跟踪,默认为None,自己判断调用函数名称
:param errback: 提供一个回调函数,如果发生了指定异常,就调用该函数,该函数的返回值为True时不会继续抛出异常 默认打出异常信息,返回True
:param finalback: finally要做的操作 默认返回是否发生异常。
通过自定义errback,我们可以对异常做任何想要的操作。
debuggerdebug小工具
有时我们可能会使用pdb来调试,经常会发生的情况是,我们在测试环境下调试,部署到生产之后,发现pdb.set_trace()忘记删除,导致代码在生产系统中卡住,这就很尴尬了。使用debugger,同时在测试环境中加入export DEBUG=True,可以轻松避免上述情况
duplicate保序去重函数
我们经常会遇到去重问题,比如
上述列表中有2个4,我们想去掉多余的4,但是不想顺序乱掉,如果使用list(set(ls))的方式,顺序会乱掉,因此我们可以使用duplicate函数来做
chain_all连接多个可迭代对象
safely_json_loads安全的将字符串变成json对象
对于空字符串,返回默认类型,对于使用单引号包裹的字符串,将其转换成双引号
format_html_string格式化html
去掉多余的html属性
....
除以上工具以外,还有很多工具非常有用,由于例子相对复杂,就不一一举例了,可以多关注我的github, 如ShichaoMa/proxy_factory项目,就有很多用例出现。
下面简单介绍一些其它工具
重试器,包装函数对指定异常进行重试
超时器,装饰函数并指定其超时时间
自实现groupby
cookie解析
查找字符串函数和类
查找字符串模块
获取可用端口
线程安全装饰器
慢保存或提交
类中的线程安全装饰器
获取ip
下面提供一些基础设施
common_stop_start_control :提供开,关,重启,状态等命令行服务
Singleton:单例元类
Logger:提供日志服务
SettingsWrapper: 提供配置信息服务
ParallelMonitor: 使用Singleton构建, 多线程多进程统一管理器
LoggingMonitor:内建Logger和Settings
Service: 继承自ParallelMonitor,LoggingMonitor并实现common_stop_start_control 接口。编写微服务专用基类。
ProxyPool:基于redis的代理池,继承自Logger
ItemConsumer:kafka消费者,继承自Service
ItemProducer:kafka生产者,继承自Service
RedisQueue:基于redis的队列
FifoDiskQueue:持久化 FIFO 队列
Translate:翻译器,继承自ProxyPool,安装即可用的翻译器见ShichaoMa/translate_html
除以上工具之外,还有一些小工具,小函数,如果有兴趣的话,自己去源码里发现吧。
领取专属 10元无门槛券
私享最新 技术干货