Используя gen.task с Tornado для простой функции

Просто пытаюсь использовать асинхронные функции Tornado - я хочу вызвать метод из моего обработчика, но он продолжает говорить мне, что он "получил неожиданный аргумент ключевого слова" обратный вызов ".

class MyHandler(tornado.web.RequestHandler):

    @asynchronous
    @gen.engine
    def get(self):
        response = yield gen.Task(self.dosomething, 'argument')
        self.write(response)
        self.finish()

    def dosomething(self, myargument):
        pass

Ответ 1

Неблокирующая функция требует обратного вызова, где он передает результат.

class MyHandler(tornado.web.RequestHandler):

    @asynchronous
    @gen.engine
    def get(self):
        response = yield gen.Task(self.dosomething, 'argument')
        self.write(response)
        self.finish()

    def dosomething(self, myargument, callback):
        return callback(myargument)