如何使Tornado服务器端真的异步

时间:2015-08-20 12:01:52

标签: python tornado

我启动了一个基于文件的长数据库搜索,该搜索应该运行异步,并将浏览器端单独留给其他请求,但它似乎阻止了。有什么问题?

class Handler(tornado.web.RequestHandler):

    def initialize(self, param):
        self.db = param

    @tornado.web.asynchronous
    @gen.engine
    def post(self):
        try:
            self.set_status(200)
            response = yield gen.Task(self.handleSearch, self.request.arguments)
            self.finish(response)
        except BaseException, s:
            logging.exception(s)
            self.finish("Error tonight, cause: %s" % s)

    def handleSearch(self, request, callback):
        return callback(self.db.createList(request))

1 个答案:

答案 0 :(得分:1)

为了使用龙卷风异步功能,您的功能也需要异步,否则它不是真的异步

有一些针对龙卷风的库,check this out用于库,但如果你找不到你需要的库,另一个解决方案就是使用精彩的future

所以在python中使用future你的代码就像这样

{{1}}

我已经测试了它,它可以正常运行,它与龙卷风100%兼容,所以你不会遇到任何问题