#! /usr/bin/env python # -*- 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: # Broken here raise tornado.web.HTTPError(500, 'Ooops') log.debug('Meoh!') self.write(response.body) self.finish() @tornado.web.asynchronous def get(self, url): self.perform_response(url) log.debug('Nya!') application = tornado.web.Application([ (r"/(.*)", MainHandler), ]) if __name__ == "__main__": http_server = tornado.httpserver.HTTPServer(application) http_server.listen(8888) tornado.ioloop.IOLoop.instance().start()