Python
12 Dec 2009
 

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()