На початку Facebook був побудований з використанням PHP і MySQL, але, як трафіку і розміру мережі збільшилася, так і зробили свої вимоги для швидкого і кращого доставки контенту в режимі реального часу.
Це призвело команду Facebook, щоб копатися в інших технологій і мов за межами PHP, і компанія незабаром повернули погляд на Python, мова програмування, що використовується Google для створення своєї пошукової системи.
Зусилля команди привели в продукті під назвою Tornado, рамки Python, спеціально розроблений для роботи з сирими з'єднань HTTP в простій асинхронної Неблокуючий чином.
Торнадо був натхненний іншими інструментами, як Web.py і Google, веб-додаток, але також включає в себе додаткові функції, а також.
У центрі всього рамках проживає потужний сервер HTTP, який посилюється набором модулів для роботи з вмістом i18n, рядками, покоління вихідний, асинхронних операцій, сторонньому коді, журналів і так далі.
Крім Кассандра , Торнадо є одним з найуспішніших відкритих джерел додатків Facebook на сьогоднішній день.
Що нового У цьому випуску
- Нові модулі: tornado.locks і tornado.queues
Що нового у версії 4.2:
- Нові модулі: tornado.locks і tornado.queues
Що нового у версії 4.1:
- The tornado.web.stream_request_body декоратор дозволяє великі файли, щоб бути завантажено з обмеженою використання пам'яті.
- співпрограмами тепер швидше і широко використовуються у всьому самої Tornado. Більше методів тепер повернемося ф'ючерси, у тому числі більшості методів IOStream і RequestHandler.flush.
- Багато користувачем перевизначити методи в даний час дозволено повернутися в майбутнє для управління потоком.
- HTTP-код, пов'язаний з тепер розподіляється між tornado.httpserver, tornado.simple_httpclient і tornado.wsgi модулів, що робить підтримку таких функцій, як фрагментовані і кодування GZIP більш послідовним. HTTPServer тепер використовує нові інтерфейси, визначені делегатів у tornado.httputil на додаток до своєї старої одного інтерфейсу зворотного виклику.
- Новий модуль tornado.tcpclient створює з'єднання TCP з Неблокуючий DNS, SSL рукостискання, і підтримку IPv6.
Що нового у версії 3.2.2:
- Маркер XSRF тепер кодується з випадковим маски на кожен запит. Це робить його безпечним для включення в стислих сторінок, не будучи уразливими до порушення атаки. Це відноситься до більшості додатків, що використовують обидва xsrf_cookies і варіанти GZIP (або GZIP застосовується за дорученням).
- Якщо Торнадо 3.2.2 запускається в той же час, як більш старих версій на тому ж домені, є деякий потенціал для запитань з різними версіями печива. Встановлення програм xsrf_cookie_version = 1 може бути використаний протягом перехідного періоду, щоб генерувати старий формат куки на нових серверів.
- tornado.platform.asyncio тепер сумісний з Trollius версії 0.3.
Що нового у версії 3.2.1:
- Формат підписав значення використовується RequestHandler.set_secure_cookie і RequestHandler.get_secure_cookie змінилася, щоб бути більш безпечним. Це незворотних змін. Функції secure_cookie прийняти нові параметри версії для підтримки переходів між форматами печива.
- Новий формат печиво усуває вразливість, яка може бути присутнім в додатках, що використовують кілька печиво, де ім'я одного печива є префіксом імені іншого.
- Щоб звести до мінімуму порушення, печиво в старому форматі будуть прийматися за замовчуванням, поки вони не застаріють. Додатки, які можуть бути уразливі може відхилити всі куки в старому форматі, передаючи MIN_VERSION = 2 RequestHandler.get_secure_cookie.
Що нового у версії 3.2:
- Новий додаток налаштування default_handler_class можуть бути використані для легко налаштувати користувальницький 404 сторінок.
- Нью налаштування програми автоперезагрузка, compiled_template_cache, static_hash_cache і serve_traceback можуть бути використані для управління окремими аспектами режимі налагодження.
- Нью методи RequestHandler.get_query_argument і RequestHandler.get_body_argument і нові атрибути HTTPRequest.query_arguments і HTTPRequest.body_arguments дозволити доступ до аргументів без змішання тих з рядка запиту з тими, з тілом запиту.
- RequestHandler.decode_argument і пов'язані методи в даний час підняти HTTPError (400) замість UnicodeDecodeError, коли аргумент не може бути декодована.
- RequestHandler.clear_all_cookies тепер приймає аргументи домену та шлях, як clear_cookie.
- Це тепер можна вказати обробники по імені при використанні класу URLSpec.
- Застосування тепер приймає 4-кортежів, щоб вказати параметр ім'я (які раніше необхідну створення об'єкта URLSpec замість кортежу).
- Виправлена неправильне повідомлення про помилку, коли методи-обробники повертають значення, ніж None чи майбутнє.
- Винятку не буде записана двічі при використанні какasynchronous і @ gen.coroutine.
Що нового у версії 3.1:
- Багато посилання циклів були розбиті протягом упаковці, що дозволяє для більш ефективного збору сміття на CPython.
- глушником деякі повідомлення журналу при з'єднання відкриті і негайно закриті (тобто сканування портів), або інші ситуації, пов'язані з закритими сполуками.
- Різні дрібні прискорень: HTTPHeaders справу нормалізації, UIModule проксі-об'єкти, прекомпілірованние деякі регулярні вирази .
Що нового у версії 3.0.2:
- tornado.auth.TwitterMixin тепер за замовчуванням версії 1.1 в API Twitter, а не версії 1.0, яка в даний час припинено 11 червня Він також використовує HTTPS в даний час, коли розмовляє з Twitter.
- Виправлена потенційна витік пам'яті з довгого ланцюга gen.coroutine або gen.engine функцій.
Що нового у версії 3.0:
- Параметр `` callback`` аргумент багатьох асинхронних методів Тепер необов'язково, і ці методи повертають `.Future`. Модуля `tornado.gen` тепер понімает`` Futures``, і ці методи можуть бути використані безпосередньо, без оберткі` .gen.Task`.
- Нова функція `.IOLoop.current` возвращает` .IOLoop`, який працює в поточному потоці (на відміну від` .IOLoop.instance`, який повертає зазвичай) IOLoop основного потоку конкретного потоку (.
- Новий клас `tornado.netutil.Resolver` забезпечує асинхронний інтерфейс з резолюцією DNS.
- Новий клас `` tornado.process.Subprocess` обгортання subprocess.Popen` з `.PipeIOStream` доступу до файлових дескрипторів дитини.
- `.IOLoop` тепер має статіческій` налаштувати і # x3c; .Configurable.configure & # x3e;` метод, як один на '.AsyncHTTPClient`, які можуть бути використані для вибору `реалізацію .IOLoop` інший, ніж за замовчуванням. * `.IOLoop` Тепер можуть додатково використовувати монотонне годинник, якщо є.
Що нового у версії 2.4.1:
- Виправлена витік пам'яті в tornado.stack_context, що було особливо ймовірно з функціями давно працює @ gen.engine.
- tornado.auth.TwitterMixin тепер працює на Python 3.
- Виправлена помилка, в якій IOStream.read_until_close з потоковим зворотного виклику іноді проходять останню порцію даних до кінцевого зворотного виклику замість потокового зворотного виклику.
Що нового у версії 2.4:
- Виправлені помилки Python 3 в tornado.auth, tornado.locale і tornado.wsgi.
- OAuthMixin тепер приймає і Quot; OOB & Quot; як callback_uri.
- OpenIDMixin тепер повертає claimed_id поле для користувача.
- tornado.platform.twisted послідовність відключення зараз більш сумісно.
- Конфігурація реєстрації використовується в tornado.options тепер більш терпимі НЕ-ASCII байт рядка.
Що нового у версії 2.3:
- `tornado.httpclient.HTTPClient` тепер підтримує той же конструктор ключові аргументи як `AsyncHTTPClient`.
- Параметр `` max_clients`` ключове слово аргумент `AsyncHTTPClient.configure` тепер працює.
- `tornado.simple_httpclient` тепер поддержівает`` OPTIONS`` і` `PATCH`` HTTP методи.
- `tornado.simple_httpclient` краще про закриття своїх гнізд, а не залишати їх для збору сміття.
- `tornado.simple_httpclient` правильно перевіряє сертифікати SSL для URL-адрес, що містять літерали IPv6 (Ця помилка впливає Python 2.5 і 2.6).
- `tornado.curl_httpclient` тепер підтримує клієнтські сертифікати SSL (використовуючи той же`` client_cert`` і` `client_key`` аргументи як` tornado.simple_httpclient`.
не «LI>` tornado.simple_httpclient` більше не включає в себе основні авторизації в облікові дані В` `заголовку Host``, коли ці облікові дані, витягнуті з URL.
не «LI>` tornado.simple_httpclient` більше не змінює викликає поставляється словник заголовка, який викликав проблеми, коли після перенаправлення.
Що нового у версії 2.2.1:
- виправлення безпеки:
- `tornado.web.RequestHandler.set_header` тепер правильно дезінфікує вхідні значення для захисту від ін'єкції заголовка, відповіді розщеплення, і т.д. (це завжди намагалися зробити це, але чек був неправильним). Зверніть увагу, що перенаправляє, найбільш імовірним джерелом таких помилок охороняються окремому перевірки в `RequestHandler.redirect`.
- виправлення:
- Конфігурація реєстрації Кольорові в `tornado.options` сумісний з Python 3.2.3 (і 3.3).
Що нового у версії 2.2 :.
- Оновлений і розширений підтримка WebSocket
- Покращена сумісність в міст кручений / Tornado.
- помилки шаблону Тепер генерувати більш трасування стека.
- Краще обробка виключень в `tornado.gen`.
Що нового у версії 2.1.1:
- виправлення:
- Виправлена обробка замкнутих зв'язків з `` epoll`` (тобто Linux) `` IOLoop``. Раніше закриті сполуки можуть бути закриті занадто рано, які найчастіше проявляється у вигляді & Quot; потік закритий і Quot; виключення в `` SimpleAsyncHTTPClient``.
- Виправлена помилка, в якій поблочного відповіді можуть бути закрита передчасно, що призводить до укороченим виробництва.
- `` IOStream.connect`` тепер повідомляє помилки більш послідовно за допомогою реєстрації та тісній зворотного виклику (наприклад, це стосується з'єднань на локальний на FreeBSD).
- `` IOStream.read_bytes`` знову приймає і `` int`` і `` long`` аргументи.
не «LI>` `PeriodicCallback`` більше не працює, коли неодноразово` `IOLoop`` ітерації виконується швидше, ніж дозвіл` `time.time ()` `(в основному проблеми на Windows).
Що нового у версії 2.1.0:
- DigiNotar був видалений з файлу сертифікатів CA за замовчуванням використовується `SimpleAsyncHTTPClient`
- Щоб полегшити деякі додаткові сценарії декількох процесів, `` HTTPServer`` має новий метод `` add_sockets`` і гніздо-відкриття код доступний окремо як `tornado.netutil.bind_sockets`.
- Підтримка захищених печиво, написаних заздалегідь 1,0-релізи Торнадо був видалений.
- Підтримка ОС Windows була покращена.
Що нового у версії 2.0.0:
- Основні зміни:
- шаблон виводу автоматично втік за замовчуванням.
- реалізація за замовчуванням AsyncHTTPClient тепер simple_httpclient.
- Python 3.2 тепер підтримує.
- Зворотна сумісність:
- Шаблон autoescaping включена за замовчуванням. Оновлення додатків з попередньої версії Tornado повинні або відключити autoescaping або адаптувати свої шаблони для роботи з ним. Для більшості додатків, найпростіший спосіб зробити це, щоб пройти autoescape = None в конструктор додатків.
- Додатки, які хочуть продовжувати використовувати curl_httpclient замість simple_httpclient може зробити за телефоном (AsyncHTTPClient.configure & Quot; tornado.curl_httpclient.CurlAsyncHTTPClient & Quot;) на початку процесу. Користувачі Python 2.5, ймовірно, хочете використовувати в якості curl_httpclient simple_httpclient підтримує тільки SSL на Python 2.6 +.
- Python 3 Сумісність участь багато змін по всьому коді, так що користувачі будуть заохочувати протестувати свої програми більш ретельно, ніж зазвичай при оновленні до цієї версії.
- Інші зміни у версії 4.1:
- В шаблони кілька нових директив: - {% autoescape ...%}, щоб контролювати поведінку втечі - {% сирої ...%} для виходу немаскірованном - {% модуль ...%} для виклику UIModules * {% модуль Шаблон (шлях, ** kwargs)%} тепер може бути використаний для виклику іншого шаблону з незалежним імен.
- Всі зворотні виклики IOStream тепер працювати безпосередньо на IOLoop допомогою add_callback.
- HTTPServer тепер підтримує IPv6 де доступні. Щоб відключити, пройти сім'я = socket.AF_INET в HTTPServer.bind ().
- HTTPClient тепер підтримує IPv6, конфігурується за допомогою allow_ipv6 = BOOL на HTTPRequest. allow_ipv6 замовчуванням до помилкових на simple_httpclient і правда на curl_httpclient.
- RequestHandlers можете використовувати кодування, ніж UTF-8 для параметрів запиту за допомогою перевизначення decode_argument ().
- Продуктивність, особливо для додатків, які використовують багато IOLoop тайм-аути.
- Вихід JSON (RequestHandler.write (DICT)) тепер встановлює Content-Type для додатків / JSON.
- обчислення Etag тепер можуть бути налаштовані або відключені за допомогою перевизначення RequestHandler.compute_etag.
поліпшення
не «LI> HTTP метод ВАРІАНТИ більше не потрібно маркер XSRF.
не «LI> змінна USE_SIMPLE_HTTPCLIENT середу більше не підтримується. Використання AsyncHTTPClient.configure замість цього.
Що нового у версії 1.2.1:
- Цей реліз містить тільки два невеликих змін в порівнянні з версією 1.2:
- FacebookGraphMixin був оновлений для роботи з недавньою зміною до API Facebook.
- Запуск & Quot; setup.py встановити і Quot; більше не буде намагатися автоматично встановити pycurl. Це не працює добре на платформах, де найкраще встановити pycurl здійснюється через щось на зразок APT-отримати замість easy_install. Це важливий оновлення, якщо ви використовуєте FacebookGraphMixin, але в іншому випадку він може бути проігноровано.
Що нового у версії 1.2.0:
- Цей реліз включає в себе назад-несумісне зміна безпеки від Версія 1.1.1.
- Щоб прозоро замінити tornado.httpclient.AsyncHTTPClient з цією новою реалізації, ви можете встановити змінну середовища USE_SIMPLE_HTTPCLIENT = 1
- Запит реєстрації тепер виконується за допомогою додатка, а чим RequestHandler. Вхід поведінка може бути налаштована або перевизначення Application.log_request в підкласі або проходження log_function як налаштування додатків.
Що нового у версії 1.1.1:
- Торнадо 1.1.1 є зворотної сумісності безпеки оновлення, що усуває вразливість XSRF.
Що нового у версії 1.1:
- Зміни:
- їх використання). Тепер Неперехваченние виключення викличе запит повинен бути закритий навіть у функції зворотного виклику. Якщо вам цікаво, як це працює, побачити новий модуль tornado.stack_context.
- Новий модуль tornado.testing містить підтримку для модульного тестування асинхронного IOLoop основі коду.
- AsyncHTTPClient був переписаний (нова реалізація була доступна AsyncHTTPClient2 в Торнадо 1,0; обидві назви підтримуються для зворотного
- сумісність).
- Модуль tornado.auth була ряд оновлень, включаючи підтримку OAuth 2.0 і Facebook Graph API і оновлення Twitter і Google підтримки OAuth 1.0a.
- Модуль WebSocket повернувся, і підтримує останню версію (76) протоколу WebSocket. Зверніть увагу, що інтерфейс цього модуля відрізняється від модуля WebSocket, яка з'явилася в попередніх версій 1.0 торнадо.
- Новий метод RequestHandler.initialize () можна перевизначити в підкласах для спрощення обробки аргументів з URLSpecs. Послідовність методів називається під час ініціалізації документально в http://tornadoweb.org/documentation#overriding-requesthandler-methods
- get_argument () і пов'язані з ними методи в даний час працюють на запити PUT на додаток до POST.
- Модуль HttpClient підтримує HTTP-проксі.
- Коли HTTPServer виконується в режимі SSL, діалогу SSL тепер без блокування.
- Багато виправлень помилок менше і поновлення документації
- Зворотна сумісність:
- У той час як більшість користувачів Торнадо не повинні мати справу з модулем stack_context безпосередньо, користувачі робочих пулів потоків і аналогічних конструкцій, можливо, буде потрібно використовувати stack_context.wrap та / або NullContext, щоб уникнути витоку пам'яті.
- Новий AsyncHTTPClient і раніше працює з Libcurl версія 7.16.x, але він виконує краще, коли обидва Libcurl і pycurl, принаймні версія 7.18.2.
- OAuth угоди почали попередніх версій модуля Ідент не може бути завершена в рамках нового модуля. Це відноситься тільки до первісного процесу авторизації; як тільки авторизований маркер видається, що маркер працює з будь-якої версії.
не «LI> RequestHandler.async_callback і пов'язані функції в інших класах більше не потрібен в більшості випадків (хоча це не нешкідливо для продовження
Примітки
Вимоги
- Python 2.6 або вище
Коментар не знайдено