栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

龙卷风阻止异步请求

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

龙卷风阻止异步请求

这是一个完整的示例Tornado应用程序,该应用程序使用Async HTTP客户端和该

gen.Task
模块使事情变得简单。

如果您

gen.Task
在文档中了解更多信息,您会发现实际上可以同时调度多个请求。这是使用“龙卷风”的核心思想,即一切都不会阻塞并且仍保持单个进程。

更新: 我添加了一个线程处理程序,以演示如何将工作分派到第二个线程中并在

callback()
完成时接收。

import osimport threadingimport tornado.optionsimport tornado.ioloopimport tornado.httpserverimport tornado.httpclientimport tornado.webfrom tornado import genfrom tornado.web import asynchronoustornado.options.define('port', type=int, default=9000, help='server port number (default: 9000)')tornado.options.define('debug', type=bool, default=False, help='run in debug mode with autoreload (default: False)')class Worker(threading.Thread):   def __init__(self, callback=None, *args, **kwargs):        super(Worker, self).__init__(*args, **kwargs)        self.callback = callback   def run(self):        import time        time.sleep(10)        self.callback('DONE')class Application(tornado.web.Application):    def __init__(self):        handlers = [ (r"/", IndexHandler), (r"/thread", ThreadHandler),        ]        settings = dict( static_path = os.path.join(os.path.dirname(__file__), "static"), template_path = os.path.join(os.path.dirname(__file__), "templates"), debug = tornado.options.options.debug,        )        tornado.web.Application.__init__(self, handlers, **settings)class IndexHandler(tornado.web.RequestHandler):    client = tornado.httpclient.AsyncHTTPClient()    @asynchronous    @gen.engine    def get(self):        response = yield gen.Task(self.client.fetch, "http://google.com")        self.finish("Google's homepage is %d bytes long" % len(response.body))class ThreadHandler(tornado.web.RequestHandler):    @asynchronous    def get(self):        Worker(self.worker_done).start()    def worker_done(self, value):        self.finish(value)def main():    tornado.options.parse_command_line()    http_server = tornado.httpserver.HTTPServer(Application())    http_server.listen(tornado.options.options.port)    tornado.ioloop.IOLoop.instance().start()if __name__ == "__main__":    main()


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/660839.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号