强烈建议阅读中文版的入门教程:http://www.tornadoweb.cn/documentation。
代理百度:
import signal
from tornado.ioloop import IOLoop
from tornado.web import RequestHandler, Application
from tornado.gen import coroutine
from tornado.httpclient import AsyncHTTPClient
class MainRequestHandler(RequestHandler):
@coroutine
def get(self):
httpclient = AsyncHTTPClient()
response = yield httpclient.fetch("http://www.baidu.com/")
if response.error:
self.set_header("Content-Type", "text/plain")
self.write("error accurs:%s" % response)
return
self.set_status(response.code)
for hn, hv in response.headers.iteritems():
if hn == "Transfer-Encoding":
continue
self.set_header(hn, hv)
self.write(response.body)
def handle_signal():
def on_quit(sn, fo):
print("stoping IOLoop")
IOLoop.current().stop()
signal.signal(signal.SIGINT, on_quit)
def main():
handle_signal()
app = Application([
(r"/*", MainRequestHandler)
])
app.listen(8081)
IOLoop.current().start()
if __name__ == "__main__":
main()