小编Mar*_*cha的帖子

龙卷风'@run_on_executor'正在阻止

我想问一下tornado.concurrent.run_on_executor(以后只是run_on_executor)如何工作,因为我可能不明白如何运行同步任务来阻止主IOLoop.

run_on_executor我发现所有使用的例子都只是time用来阻止循环.使用time模块它工作正常,但当我尝试使用时run_on_executor,任务阻止IOLoop.我能够看到应用程序使用多个线程,但它仍然阻塞.

我想用于使用run_on_executor散列密码bcrypt,但是用这个计算代替它以获得一些额外的测试时间.

在这里,我有一个小应用程序,以证明我的困惑.

from tornado.options import define, options
import tornado.web
import tornado.httpserver
from tornado import gen
from tornado.concurrent import run_on_executor
import tornado.httpclient
import tornado.escape
import time
import concurrent.futures
import urllib


executor = concurrent.futures.ThreadPoolExecutor(20)
define("port", default=8888, help="run on the given port", type=int)


# Should not be blocking ?
class ExpHandler(tornado.web.RequestHandler):
    _thread_pool = executor

    @gen.coroutine
    def get(self, num):
        i = int(num)
        result = yield self.exp(2, i) …
Run Code Online (Sandbox Code Playgroud)

python tornado nonblocking

5
推荐指数
1
解决办法
3182
查看次数

标签 统计

nonblocking ×1

python ×1

tornado ×1