Найти - Пользователи
Полная версия: Tornado Как понять этот код?
Начало » Web » Tornado Как понять этот код?
1
Singularity
Всем привет!

Пытаюсь разобраться с этим интересным фреймворком, но пример c документации меня вводит в ступор.

Вот он:
class GenAsyncHandler2(RequestHandler):
    @asynchronous
    @gen.coroutine
    def get(self):
        http_client = AsyncHTTPClient()
        http_client.fetch("http://example.com",
                          callback=(yield gen.Callback("key"))
        response = yield gen.Wait("key")
        do_something_with_response(response)
        self.render("template.html")

Помогите пожалуйста
o7412369815963
class GenAsyncHandler2(RequestHandler):
    @asynchronous  # запрос не будет закрыт по завершению ф-ии, нужно вручную вызвать self.finish()
    @gen.coroutine  # запуск ф-ии через генератор т.к. там будут вызовы через yield
    def get(self):
        http_client = AsyncHTTPClient()
        http_client.fetch("http://example.com", callback=(yield gen.Callback("key"))  # делаем запрос к сайту и создаем "калбек" с ключом "key" куда вернется управления после запроса
        response = yield gen.Wait("key")  # ждем когда калбек "key" сработает и получаем результат от запроса
        do_something_with_response(response)  # обрабатываем данные
        self.render("template.html")  # отрисовываем шаблон, и видимо он закроет коннект (self.finish())
что то типа того…
Singularity
Значит мы сделали асинхронный http запрос, а затем вместо колбека передали выполнение с функции.
gen.Callback(“key”) кажется должен отдавать функцию, хотя в его реализации я такого не вижу http://www.tornadoweb.org/en/stable/_modules/tornado/gen.html#YieldPoint

Капец, какое там хитросплетения функций



lorien
А где была определена переменная `gen`, не очень понял.
Singularity
В http://www.tornadoweb.org/en/stable/gen.html
lorien
> gen.Callback(“key”)

Глянул сорцы. Что значит get.Callback должен отдавать функцию? `get.Callback` это создание instance класса Callback определённого в gen модуле, а дальше торнадо что-то там делает с этим instance.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB