Python
12 Dec 2009 HTML Text
 
tornado adisp v2
 
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
# -*- coding: utf-8 -*-
import tornado.httpserver
import tornado.httpclient
import tornado.web
import tornado.options
from adisp import async, process

import logging
logging.basicConfig()
log = logging.getLogger()
log.setLevel(logging.DEBUG)

class MainHandler(tornado.web.RequestHandler):
    @process
    def perform_response(self, url):
        @async
        def do_get(callback):
            http = tornado.httpclient.AsyncHTTPClient()
            http.fetch(url, callback=lambda response: callback(response))

        response = yield do_get()
        if response.error:
            if self._headers_written:
                log.error("Exception after headers written")
            else:
                self._handle_request_exception(response.error)

        if not self._finished:
            self.write(response.body)
            self.finish()

    @tornado.web.asynchronous    
    def get(self, url):
        self.perform_response(url)

application = tornado.web.Application([
    (r"/(.*)", MainHandler),
])

if __name__ == "__main__":
    http_server = tornado.httpserver.HTTPServer(application)
    http_server.listen(8888)
    tornado.ioloop.IOLoop.instance().start()