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' を追加しましたが、まだブロックされています((