# coding: utf-8 import tornado import tornado.web from tornado import ioloop, gen, httpclient from tornado.web import RequestHandler class Holder(object): pass holder = Holder() @gen.engine def outside_function(callback, value): holder.value = value yield gen.Task(httpclient.AsyncHTTPClient().fetch, 'https://www.google.com') callback(value) class MasterHandler(RequestHandler): @gen.coroutine def get(self): holder.value = self.get_argument('value', 'default') yield gen.Task(outside_function, value=holder.value) self.finish(str(holder.value)) urls = [ (r'/', MasterHandler), ] app = tornado.web.Application(urls) app.listen(8000) ioloop.IOLoop().instance().start()