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