美文网首页
tornado中,异步执行阻塞代码

tornado中,异步执行阻塞代码

作者: 第八共同体 | 来源:发表于2017-12-27 12:10 被阅读0次
import time
import datetime
import tornado.ioloop
import tornado.web
import tornado.gen
import tornado.concurrent
from concurrent.futures import ThreadPoolExecutor

class MainHandler(tornado.web.RequestHandler):
    executor = ThreadPoolExecutor(10)
    @tornado.gen.coroutine
    def get(self):
        future = ThreadPoolExecutor().submit(self.blocksleep)
        yield tornado.gen.with_timeout(datetime.timedelta(10), future,
                                       quiet_exceptions=tornado.gen.TimeoutError)
        self.write("Hello, world")

    @tornado.concurrent.run_on_executor
    def blocksleep(self):
        time.sleep(20)
        return


def make_app():
    return tornado.web.Application([
        (r"/", MainHandler),
    ])

if __name__ == "__main__":
    app = make_app()
    app.listen(8888)
    tornado.ioloop.IOLoop.current().start()

相关文章

  • tornado中,异步执行阻塞代码

  • 📕 史上最实用的JS笔记

    1. 同步与异步 同步和异步的区别是什么?分别举一个同步和异步的例子 同步会阻塞代码执行,而异步不会阻塞代码执行。...

  • JS基础知识5--同步和异步

    题目 一,同步和异步的区别是什么?异步是基于JS单线程的,异步不会阻塞代码的执行,同步会阻塞代码的执行 二,手写p...

  • 异步

    异步:不阻塞代码,提高执行效率同步:必须执行返回后,才能执行后面代码 异步场景:ajax,定时器(setTimeo...

  • 同步异步

    异步:不阻塞代码,提高执行效率同步:必须执行返回后,才能执行后面代码 异步场景:ajax,定时器(setTimeo...

  • 异步

    异步:不阻塞代码,提高执行效率同步:必须执行返回后,才能执行后面代码 异步场景:ajax,定时器(setTimeo...

  • tornado异步非阻塞请求

    基础知识 首先对同步/异步、阻塞/非阻塞、以及tornado中asyncio进行了解,参考下面的文章1.pytho...

  • Tornado入门(一)【简介】

    这个系列都是译自官方文档,地址: tornado Tornado是基于Python实现的异步网络框架,它采用非阻塞...

  • tornado【5】阻塞与异步概念

    在tornado中,我们谈到的阻塞一般是针对网络IO,而忽略其它的阻塞(磁盘IO, 互锁)。 异步函数在结束之前就...

  • 异步和单线程 - 面试题

    1:同步和异步的区别是什么?分别举一个同步和异步的例子? 答案:同步(代码从上到下执行)会阻塞代码执行,而异步不会...

网友评论

      本文标题:tornado中,异步执行阻塞代码

      本文链接:https://www.haomeiwen.com/subject/icfugxtx.html