今天注定是不同寻常的一天,就在大约三小时前我把实验室的服务器搞炸了,有一个服务怎么都启动不了,然而没有这个服务基本上实验室开发了很久的业务就没法开展了。因为炸的是API接口,不光是普通用户,包括我自己都没法正常使用。
我所在的实验室是以陆地生态系统模式为主要研究方向的,除了我跟我师姐外没人懂计算机。被我搞炸的服务器是用来预测实验地点碳排放的,最近想加一个新的模型进去,这一直是我在调试的。而本来大家就都比较忙,也就意味着出了问题只能自己解决,除了这个问题真是欲哭无泪啊。我本来想等天亮了再搞的,然而躺床上怎么都睡不着,我甚至都在思考要怎么跑路了,但是想想也没啥地方去,除了在这个地方凭借在计算机上的一点优势还能混一混。。。最后没办法还是起床接着搞吧,没想到还比较顺利的解决了,算是虚惊一场吧。
解决这个问题的主要难点在于系统大概是三、四年前开发的,而且可怕的是没有文档,所有的东西只能靠自己摸索,我上手了几天也是胆战心惊的。而且这个系统的报错信息及其不明确,几乎找不到有用的信息,还不能打印数据,也不能输出日志,只能靠自己不停的试,这简直是为难我这种面向搜索引擎编程的人。这次把活干完我一定要写个文档出来,不能让后面接手的人再受这种折磨了。
说了这么多,可能有人好奇到底是啥问题,其实是个很小的点,那个代码主要框架用了Django,一个Python框架,然后呢奇葩的地方是缩进竟然是用的空格!!!,没错,真的是空格,我TM都惊呆了,我往代码里加了点东西,但是用的是Tab,这就导致缩进不一样,然后连锁反应导致一个关键的任务队列起不来,然后API接口在没检测到这个队列之后就就返回了异常:
这个保存信息最有用的就是告诉我可能的两个原因,我分析了一下第一个被排除了,然后就看第二个到底是为啥,最后找到是代码里缩进有问题,我在删除代码的时候发现原来的用的是空格,我是真没想到,佩服之前的人好吧!
总之问题解决了,不用再担惊受怕了,不然怕是我要卷铺盖走人了。。。
给大家看下我这现在的时间:
留言
我们写python代码的时候,一般都是用4个空格代替tab的。好多编辑器默认也是这样配置的。
是这样的,但是在我这边的代码里面,之前的缩进能够用方向键一个一个空格跳过去,如果我用Tab的话方向键会一次跳四个空格,然后解释器就认为这个是不一样的缩进,不知道之前的人用的什么黑魔法。。。
你用 tab , 它是一个字符, 方向键会一次跳一个 tab, 你看起来是跳过四个空格。
真正的问题是, 你混用了 tab 和 space, 所以会出问题。
换一个编辑器, 自动把 tab 换成空格, 我目前看到的python 相关的编辑器都会这么做
这是遗留代码,让人很头疼。。。早点睡呀!!!
我见过有人在写代码的时候,为了对齐好看,拿别人的可以正常用的代码从第一行开始,每行都手动添加一些空格重新排版。大概因为他自己的编辑器用的又不是等宽字体,所以有的实在就是对不齐(少一个空格就不够,然而多敲一个空格就过了),因此在那里抱怨一通……我看到当时真是倒吸一口凉气。
我是挺佩服敲空格的人的,我都是用tab搞