专栏名称: 马哥Linux运维
马哥linux致力于linux运维培训,连续多年排名第一,订阅者可免费获得学习机会和相关Linux独家实战资料!
目录
相关文章推荐
InfoQ架构头条  ·  平安证券现象级应用:复用率高达 ... ·  4 天前  
51好读  ›  专栏  ›  马哥Linux运维

记一次python脚本的编写过程

马哥Linux运维  · 公众号  · 运维  · 2017-03-12 08:03

正文

糖豆贴心提醒,本文阅读时间6分钟


因工作需求要写一个python脚本,来测试memcache服务器。

因为第一次写python脚本在线上运行,所以不敢大意。而又因为我自己看着python教程自学了一点python知识就赶脚自己能写出来。。。。

结果花了四五个小时愣是没写出来。

第一回合

因为要测试memcache服务就直接用python的memcache插件python-memcached。

直接yum安装:

安装好之后来测试下:

测试成功连接到memcached,但是如果当memcache出现故障时该如何获得错误信息呢?

这是我在那天下午一直纠结的问题。

然后通过help(memecache)帮助查看memcache文档信息,查找到有个方法可以获得memcache的状态信息——get_stats()。

然后脚本版本一就出炉了:

脚本出来,很简单,可是用了很长时间。

这个只能判断出host或端口出错的时候,对于连接超时的现象却没有很好的显示出来,对于host或者port那个方面出问题了也没有很好的区分。

问题有了脚本写的还是不行的,然后又开始谷歌、百度等等一系列的搜索。

最后,同事给提供一个python的memcache插件——umemcached 。

第二回合

开始开安装umemcache
下载地址:

如果报错的话,直接yum install python-devel就行了。
安装完成后先来测试一下

这个umemcache插件返回的错误信息要好的多,只要把这些错误信息过滤一下就行了、

这就要用到python的异常处理了,然后又开始了新一轮的谷歌、百度并查到了python的try except处理异常的模块。

try except模块可以捕捉到异常,可是异常信息总是获取不到,本以为让脚本结果返回到日志就行了,可是测试结果python脚本直接打印出失败信息,不会通过重定向到文件中。

下面是脚本和测试

脚本执行后如果服务器端有错误会直接跳出来。

以上是错误信息。
然后又一次查询如何获得异常信息,最后还搞了自定义异常等等,就这样一下午的时光没了……

第三回合

问题一直拖到了第二天上午。

自己实在是搞不出来,但还是不甘心,第一次写python脚本就是这样的结果,也太衰了吧!

所以就又开始搞这个脚本,找一下有关python处理异常的文章,真不巧看一篇文章是有关介绍python异常模块!

一边看一边试,突然看到可以把异常写到文件中,这回可好了,总算把问题给解决了,这里放一个图片从那个文章中截取的。

从这个脚本中我看到了希望!
然后我的脚本就变成这样:

只要处理message这个变量就行了,然后就开始给脚本升级再加些代码让它处理一下返回信息,写到日志中。

最后脚本最终版本是:




    今日值班: 马哥教育三号女神学习顾问,暖心之处甜过初恋,脑洞大开会LOL神迹,可正经可搞笑,常陪伴0基础学员高效成长,深夜凌晨常有她与你的陪伴,据说她服务的学员是成长最快的。


内容沟通、职业成长和课程学习,可添加学习顾问:

    【扫一扫即可撩】


特别提醒

马哥教育Linux精英班24期郑州校区抢座招募开始!

优惠

福利一:前二十位报名者,立享学费直降四百元优惠【仅限前二十人】;

福利二:课程开班,报名即可送马哥精心编制实体书一本【每日限额】;

福利三:课程开班,赠送马哥教育云学堂智能化学习系统权限1个价值1999元)和线下真实企业级服务器使用资格(价值2999元)【仅限本期】;