公司项目总结(2018-10-23)
1.日期:10.10
问题:测试服务出现堆栈溢出问题?
解决:递归函数没有出口,函数被重复调用,时间长必将引起堆栈溢出,只要给函数一个跳出的条件,达到条件就会跳出递归函数,这样就不会产生溢出。
产生堆栈溢出的原因只有两种:
一是错误,程序汇总出现不该出现的死循环,例如递归函数没有出口,这种情况不管栈空间有多大,早晚都会溢出,通过debug容易查找到问题所在。
二是确实栈不够使用,保存到栈上的内容是:局部变量和函数,调用的函数环境(包括函数参数等)。首先,对于局部变量,程序员应该比较清楚。
总结,栈一定不会使用得很大,主要还是要注意递归函数时引起的栈溢出,多数情况可以通过优化算法类解决,递归深度不要太深。
2.日期:10.19
问题:在公司的测试服务上,本来想将项目复制一份到本地,结果误操作将服务搞停,然后我将服务重新启动之后,发现提示错误找不到页面?
解决:后来通过查看进程之后发现之前的服务没有被完全停止,然而我又重启了一个新的服务进程,这样两个服务相互冲突,导致后面的服务启动之后找不到指定的页面;正确的做法为:先将之前的服务进程kill,然后再启动新的服务,这样运行就正常了。
3.日期:10.21
问题:uwsgi代理启动的flask项目无法热响应?
解决:上午在内网服务上进行项目修改的时候,在修改过程序文件之后,本以为会直接热响应,项目自动重启,然后就可以实现新的功能,结果最后才发现无法实现热响应,修改后项目没有重启,新的功能自然不能实现。后来将文件修改之后重启启动项目,新的功能即能实现。
4.日期:10.23
问题:循环调用类时,出现类对象不可调用
TypeError: 'API' object is not callable
解决:出现此问题是因为调用AP类的过程中,出现迭代问题。
5.日期:10.23
问题:我们python小组将量化交易系统部署到内网服务中,发现用户的财务命令时常有冻结?
解决:后来我们发现交易所的财务命令一直会出现来不及处理,导致财务命令堆积,这个之前我们的服务部署在外网的时候是没有出现的。后面和java小组一起讨论发现了问题的所在:之前服务在外网的时候,是通过外网的接口来获取数据的,可能会有几百毫秒的延时,这个时间差不多够交易所来出处理财务命令,后面我们将服务部署在内网的时候,这时候由于在内网请求数据,时间大为减少,缩短为十几毫秒,这样的速度过快,导致交易所那边根本来不及处理,所以才会有财务冻结。