Вышел Tornado Web Server 2.0 RC

    Основные изменения:


    • Автоматически добавляются escape-символы при выводе в шаблоны
    • Стандартная реализация AsyncHTTPClient теперь simple_httpclient.
    • Поддержка Python 3.2.


    Минорные изменения:


    • Новые теги шаблонизатора:
      — {% autoescape ...%} управление добавлением escape — символов
      — {% raw… %} убрать escape-символы
      — {% module… %} для вызова UIModules
    • {% module Template(path, **kwargs) %} теперь может быть использовано для вызова другого шаблона с независимым пространством имен
    • Все вызовы IOStream callbacks теперь осуществляются напрямую в IOLoop через add_callback.
    • HTTPServer теперь поддерживает IPv6. Для отключения нужно передать параметр family=socket.AF_INET в HTTPServer.bind().
    • HTTPClient теперь поддерживает IPv6, если у запроса установлен параметр allow_ipv6=True
    • RequestHandlers теперь может использовать кодировки, отличные от utf-8 для параметра запроса путем переопределения decode_argument()
    • Улучшена производительность, особенно для приложений, использующих много IOLoop timeouts
    • HTTP OPTIONS метод теперь не требует XSRF token.
    • Вывод в JSON (RequestHandler.write(dict)) теперь устанавливает Content-Type application/json
    • вычисление Etag теперь может быть настроено или отключено путем переопределения RequestHandler.compute_etag
    • USE_SIMPLE_HTTPCLIENT больше не поддерживается, вместо него используйте AsyncHTTPClient.configure.

    Берем на GitHub

    Similar posts

    Ads
    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More

    Comments 16

      0
      А тег python2 куда делся?
        0
        И, вроде, под 3 он не тестировался.
          0
          Подразумевается, что подавляющее большинство современных продуктов на питоне работает под python 2.5+, в то время как портирование продукта под третью версию каждый раз событие, так как это единичные случаи. Решил выделить отдельно.
          0
          не обнаружил документированности тэга {% module %}
          поясните вкратце, как оно работает?
            0
            пишешь какой шаблон подянуть, за ним тянутся его JS, CSS и виджеты.
            0
            НЛО прилетело и зохавало ответ mrjj


            Тоесть, {% module Template(path_to_template...) %} делает хитрый include другого шаблона, распихивая его (гипотетические) {% block headers_css %} {% block headers_js %} в соотвествующие места исходного шаблона?
            Или {% module Template() %} это частный случай {% module Foo() %}

            P.S.
            Я не знаю торнадо шаблонизатора.
              0
              Чуть выше линк дал, там не совсем прямое включение а через UI module. Типа вызова функции из шаблона, которая может рендерить другой шаблон.

              Торнадовский шаблонизатор прекрасен возможностью прямых вызывов функций, так как имеется такая возожность все остальное крайне минималистично.
                0
                UI Module вызвается просто как функция {{ modules.Entry(entry) }}
                а мне про новый тэг {% module %} непонятно.
                или это просто разные формы одного и тогоже?
                  0
                  Почти одни и те же, но внутренние пути в приложении ощутимо различаются. Подробнее тут comments.gmane.org/gmane.comp.python.tornado/163 поясняется, как это связано с новым подходом к добавлению escape символов, внятностью синтаксиса шаблонов и т.д.
            +1
            Очень радует, что перевели (или сделали совместимым, скорее) на 3.2 python. Пора бы уже многим так делать, третий питон имеет много вкусных плюшек, да и значимое улучшение GIL радует.
              +1
              Ну, меня в 2.6+ смущают только кодировки строк, все остальное можно пережить с небольшими хаками, кроме этого бесконечного источника багов. Все-таки веб это в большинстве своем работа с текстовой информацией.
                0
                Конкретно в Tornado GIL ну вообще побоку ибо он потоки не использует (вроде как).
                  0
                  так точно, конкретно он не использует, ибо весь смысл его в избежании оверхеда от переключения. Но зачастую в реальных проектах, которые его используют все же приходится применять потоки, на Хабре описывался пример такого приложения — habrahabr.ru/search/?q=%D1%82%D1%80%D0%B5%D0%BB%D1%8C%D1%8F%D0%B6
                    0
                    Да, сам Торнадо это однопоточные воркеры в каждом из которых крутится свой ioloop, конечно же нам ничего не мешает дернуть поток из кода в статье про опыт создания трельяжа хорошо описано, как корректно это производить.

                    Хотим мегараспараллеливания — добро пожаловать в Stackless, на синтетике он умудряется уделывать Erlang так, что даже не смешно: muharem.wordpress.com/2007/07/31/erlang-vs-stackless-python-a-first-benchmark/

                    Ничто не мешает написать на нем хотя бы микромодуль там где нужны ну совсем уж множественные и «честные» триды.
                  0
                  что-то он у меня не хочет работать с третьим питоном. Код вообще не заточен под python 3 – вся поддержка заключается в пропуске исходников через 2to3

                Only users with full accounts can post comments. Log in, please.