最近一直在调试Django项目,费了很长时间终于把接口调好了,现在写一下调试中遇到的问题以及解决方案
项目环境:
1. 开发环境:windows 编辑器:pycharm
2.项目架构介绍:
web ui
|
|
server
/ | \
我负责写后台代码,故前端UI的代码不是太清楚。整个项目是分布式架构,前端和server通过api交互,proxy可以部署在多台服务器上,server和proxy也是通过API通信。server采用django的rest framework, proxy采用tornado起的服务。
3.项目的日志处理
本地记录log和利用sentry捕获错误,两种方式相结合
4.调试遇到的问题
由于proxy上安装了一些python包,只能在linux系统中使用,windows环境运行不起来,因此本地不能调试,只能在服务器上调试。刚开始采用的方法的是:分别在server和proxy上的接口里写日志,然后根据日志判断代码出错的地方和原因;这种方式效率很低,一是日志很多,而是需要在代码的很多处写日志,往往调一个接口要花费大半天的时间。后来改进代码,在适当的地方raise错误,通过配置,让sentry捕获错误信息,在sentry里看错误信息,速度快很多。如果遇到sentry无法捕获的错误,可以使用ipdb来调试,这个办法还是可以的。使用sentry捕获错误信息,要在可能出错的地方raise错误,错误信息一定要全面,这样很快就能解决问题
5.记录几个http错误代码
404: 调试接口的时候,报404,一般就是url写的不对
500: 服务器端错误,代码有错误
301: url跳转,url后面没有加‘ / ’的问题
项目环境:
1. 开发环境:windows 编辑器:pycharm
2.项目架构介绍:
web ui
|
|
server
/ | \
/ | \
/ | \
proxy proxy proxy我负责写后台代码,故前端UI的代码不是太清楚。整个项目是分布式架构,前端和server通过api交互,proxy可以部署在多台服务器上,server和proxy也是通过API通信。server采用django的rest framework, proxy采用tornado起的服务。
3.项目的日志处理
本地记录log和利用sentry捕获错误,两种方式相结合
4.调试遇到的问题
由于proxy上安装了一些python包,只能在linux系统中使用,windows环境运行不起来,因此本地不能调试,只能在服务器上调试。刚开始采用的方法的是:分别在server和proxy上的接口里写日志,然后根据日志判断代码出错的地方和原因;这种方式效率很低,一是日志很多,而是需要在代码的很多处写日志,往往调一个接口要花费大半天的时间。后来改进代码,在适当的地方raise错误,通过配置,让sentry捕获错误信息,在sentry里看错误信息,速度快很多。如果遇到sentry无法捕获的错误,可以使用ipdb来调试,这个办法还是可以的。使用sentry捕获错误信息,要在可能出错的地方raise错误,错误信息一定要全面,这样很快就能解决问题
5.记录几个http错误代码
404: 调试接口的时候,报404,一般就是url写的不对
500: 服务器端错误,代码有错误
301: url跳转,url后面没有加‘ / ’的问题