今天把自己的搜狗代理项目的代码用tornado算是重写了一遍。代码行数从400行下降到200行,核心代码也只有50行左右,而且逻辑清楚了不少。

相对于buggy的asyncore模块,tornado的接口非常的简洁有力

self.read_until_close(callback=dummy_cb, streaming_callback=remote.write)
remote.read_until_close(callback=dummy_cb, streaming_callback=self.write)

这样两行就写完了所有的数据交换,相对之前自己控制buffer实在是省事很多。

而且tornado内部用了之前设想的用deque来做buffer,相信内存占用控制的也应该很不错。

可以考虑下一个翻墙的项目用tornado来做客户端。