2

Python+Tornadoを使ってWebアプリを作っています。たとえば、単純なハンドラーを作成しました。

class AdminHandler(BaseHandler):

@tornado.web.authenticated
@tornado.web.asynchronous
@gen.engine
def get(self):
    response = yield gen.Task(self.acync_func_test, 'my')
    print response
    self.render('admin/index.html')


def acync_func_test(self, argument, callback):
    for i in xrange(1,59999000):
        i**2+2-12
    callback(argument)

ただし、関数は非同期で実行されません。他のクライアントは、クエリが最初に実行されるまで待機しています。非ブロッキング実行を行う方法は?

アップデート:

async_func_test() 関数にデコレータ '@gen.engine' を追加しましたが、まだブロックされています((

4

1 に答える 1