Python 调试方法

2016-05-21
阅读 2 分钟
6.8k
这几天一直在查一个线上程序 hang 住的问题. 这个程序总是在运行50分钟后 hang 住, 通过以下的一些调试手段,发现是打日志的时候因为 buffer 满被 block 了.Python 日志是默认打到 stderr 的, 无论日志级别. 而我这个程序是被另一个程序调起的, 父进程没有接收子进程的 stderr, 导致了 buffer 被打满.在调试的过程中, 用...

再次阅读 Tornado 中的 coroutine 代码

2015-12-30
阅读 4 分钟
3k
yield and generator will be the front knowledge of this article. And you should also have some sense of epoll/kqueue and callback style. Let's enjoy the source code of the implement of coroutine.

Python2 JSON.load成Unicode的坑

2015-05-20
阅读 1 分钟
17.6k
我是接口调用方,今天在联调的时候,接口方的同学问我传过来的json是神马玩意,怎么每个item前还带个u的。 我看了一眼,我靠,还真是带个u的,自己调试的时候楞是没发现。也怪自己以前没怎么遇到过Python的编码坑,这次重新用起Python2来,一不小心就踩进坑了。 一通debug发现是Python自带的Json库会把json文件load成Uni...

Tornado 里的协程

2014-03-06
阅读 5 分钟
7.8k
在使用Tornado的时候经常会写这样的代码: {代码...} 每次看都觉得像魔法, 于是今天看了一下tornado的代码来瞅瞅发生了什么. 首先,我们找到这段代码在哪里被@gen.coroutine装饰 {代码...} 下面进入Runner, 直接看run方法, 对于Py来说, 这函数真是长的出奇, 缩进也用了很多...: {代码...} 暂时看懂了这些.关于发送一个None...