这个“家庭大脑”:拓君和九个姐妹就是个大杂烩
大家都知道,我那个项目叫“拓君”,听着像个什么高大上的服务器名,实际上就是一个跑在我家角落里,嗡嗡响个不停的老旧工控机。它是我的主心骨,我的“中央处理器”。在它下面,我硬是塞了“九个姐妹”。这九个姐妹,名字听着温婉,比如阿大、阿二啥的,但骨子里就是九个不同功能、不同脾气的Python脚本。
我当初是怎么想的?就想着要弄个全自动的“家庭大脑”。有管智能音箱的,有负责天气预警的,有定时抓取我关注的几个论坛内容的,甚至还有一个姐妹叫“阿九”,专职负责给我的老妈自动生成一些养生问候短信。听着很美结果,从头到尾,全他妈是坑。
小编温馨提醒:本站只提供游戏介绍,下载游戏请前往89游戏主站,89游戏提供真人恋爱/绅士游戏/3A单机游戏大全,点我立即前往》》》绅士游戏下载专区
说起这个实践过程,那真是把我这条老命都搭进去了。
从零开始:硬件、系统和无休止的版本冲突
1搞定硬件。我从二手市场淘了台工控机,那家伙,风扇声音跟拖拉机似的。我得给它找个角落,还生怕它跑着跑着就热死机了。系统我装的是Ubuntu Server,想着能省点资源。光是装环境,配置各种依赖,我就折腾了整整一个周末。眼睛都是红的,比以前在公司通宵割接还累。
然后是塞入姐妹们。九个脚本,一个接一个地往上搬。
- 负责简单抓数据的“阿大”和“阿二”还算顺利,装个requests库,跑起来,没啥问题。
- 到第五个姐妹“阿五”,她需要做点图像识别(为了识别验证码去打卡),要用到Tesseract OCR这玩意儿。好家伙,依赖包一下子就崩了!
- 我光是解决那个tesseract的版本兼容性,以及它对Python版本的要求,前前后后花了一个多星期。这期间,我就像个老父亲,看着自己的娃一个接一个生病,干着急。
- 最麻烦的是“阿九”,她要调微信的某个接口来发消息,微信接口动不动就变,我得天天盯着它的更新日志改我的代码。
整个部署过程,不是在调试代码,就是在填各种开源库和系统之间的版本冲突的坑。这哪是搞自动化,这分明就是给一堆相互不认识的零件找婆家。
运行中的 nightmare:抢资源和我的失业焦虑
运行起来后,才发现真正的噩梦开始了。内存是最大的问题。拓君本身吃得不多,但九个姐妹一齐跑起来,尤其是有几个脚本要跑模型,工控机直接喘不过气。我一开始设了简单的Crontab定时任务。结果大家抢着跑,要么死锁,要么跑到一半就莫名其妙地退出,日志里全是乱码,根本看不懂是谁出的问题。我每天早上起来第一件事,就是去手动一个个重启那些“罢工”的姐妹们。
你们可能要问,浪费这力气干买个商业化的服务不香吗?这事儿,还得从我去年被上家公司“优化”说起。公司说我这个做传统运维的老油条,跟不上时代了,把我给裁了。赔偿金倒是给了,但心里那口气一直不顺。我那会儿天天在家,老婆天天催我出去找工作,说我成天对着电脑在干什么不挣钱的活儿。
我心想老子自己搞个项目,证明证明老子这把年纪,不是只能给别人修打印机!拓君和他的九个姐妹,就是我证明自己的“武器”。我花了两个多月时间,天天对着电脑屏幕抠代码,饭都顾不上吃。就是靠着这股不服输的劲儿,才把这套破烂系统硬是拉扯起来了。这篇更新日志,不是给你们看的,更是给我自己看的,生怕我一停下来,就又变回那个啥都不是的中年人了。
最新的折腾:内存泄漏与夜间重启
今天这篇日志,就是要说,我总算把“拓君”的调度机制给重写了。以前是Crontab乱跑,现在我硬着头皮学了下简单的消息队列,弄了个Redis。现在姐妹们不再抢跑道了,她们按照优先级排队。
但新的问题又来了,拓君作为老大,他内存泄漏!具体原因还不知道,反正是每跑一天,占用的内存就多一点,跟个无底洞似的。我现在每天晚上十点,都要设置一个定时任务来强制重启拓君。这活儿,比我以前在公司值夜班还他妈累。但没办法,自己造的孽,哭着也要维护完。我不会放弃的,看着那九个进程在跑,比我看着公司服务器稳定运行,心里踏实多了。就是这么个过程,从零开始折腾,现在还在折腾的路上。

