zoukankan      html  css  js  c++  java
  • tornado ThreadPoolExecutor

    import os
    import sys 
    import time
    
    import tornado.httpserver
    import tornado.ioloop
    import tornado.options
    import tornado.web
    import tornado.gen
    from tornado.concurrent import run_on_executor
    from concurrent.futures import ThreadPoolExecutor
    from tornado.options import define, options
    
    class HasBlockTaskHandler(tornado.web.RequestHandler):
        executor = ThreadPoolExecutor(20)   #起线程池,由当前RequestHandler持有
        
        @tornado.gen.coroutine
        def get(self):
            strTime = time.strftime("%Y-%m-%d %H:%M:%S")
            print "in get before block_task %s" % strTime
            result = yield self.block_task(strTime)
            print "in get after block_task"
            self.write("%s" % (result))
    
        @run_on_executor
        def block_task(self, strTime):
            print "in block_task %s" % strTime
            for i in range(1, 16):
                time.sleep(1)
                print "step %d : %s" % (i, strTime)
            return "Finish %s" % strTime
    
    if __name__ == "__main__":
        tornado.options.parse_command_line()
        app = tornado.web.Application(handlers=[(r"/sleep", HasBlockTaskHandler)], autoreload=False, debug=False)
        http_server = tornado.httpserver.HTTPServer(app)
        http_server.listen(8888)
        tornado.ioloop.IOLoop.instance().start()
  • 相关阅读:
    32位二进制IP地址与十进制IP地址互相转换
    在安装AndroidStudio时产生的问题
    Java 数列求和
    Java throws Exception、try、catch
    Java 语句循环
    Oracle OEM
    数据泵Expdp和Impdp
    java查询高斯数据库表某个字段值
    安全测试笔记(未更新完)
    工作笔记
  • 原文地址:https://www.cnblogs.com/howhy/p/9627832.html
Copyright © 2011-2022 走看看