Статья про то, как с помощью расширенных генераторов Python сделать собственную реализацию сопрограмм, переключающихся по получению событий. Простота кода получившегося модуля вас приятно удивит и прояснит новые и мало используемые возможности языка, которые можно получить, используя такие генераторы. Статья поможет разобраться и с тем, как это устроено в серьезных реализациях: asyncio, tornado, etc.
Читать полностью »
Рубрика «tornado» - 2
Python реализация парадигмы event-driven с помощью сопрограмм
2014-11-14 в 11:23, admin, рубрики: coroutine, event loop, event-driven programming, python, tornado, yield from, Алгоритмы, параллельное программирование, паттерны проектирования, событийное программированиеCentrifuge — я больше не буду обновлять страницу перед отправкой комментария
2014-09-19 в 8:58, admin, рубрики: asynchronous, python, redis, sockjs, tornado, WebSocket, Блог компании Mail.Ru Group, Веб-разработкаПрошло некоторое время с тех пор, как я писал про Центрифугу в предыдущий раз. Произошло множество изменений за этот период. Многое из того, что было описано в ранних статьях (1, 2) кануло в лету, но суть и идея проекта остались прежними — это сервер рассылки real-time сообщений пользователям, подключенным из веб-браузера. Когда на вашем сайте возникает событие, о котором вам нужно моментально сообщить некоторым вашим пользователям, вы постите это событие в Центрифугу, а она, в свою очередь, отправляет его всем заинтересованным пользователям, подписанным на нужный канал. В самом простом виде это показано на схеме:
Проект написан на Python с использованием асинхронного веб-сервера Tornado. Использовать можно даже если бекенд вашего сайта написан не на Python. Хотелось бы рассказать о том, что Центрифуга представляет собой на данный момент.
Читать полностью »
Современный торнадо, часть 2: блокирующие операции
2014-07-27 в 11:43, admin, рубрики: async, coroutine, mongodb, motor, python, tornado, Веб-разработкаУлучшаем наш распределённый хостинг картинок. В этой части мы поговорим о конфигурировании приложения и подключим защиту от csrf. Затем, на примере создания миниатюр картинок, научимся работать с блокирующими задачами, запускать корутины параллельно и обрабатывать возникающие в них исключения.Читать полностью »
Современный Торнадо: распределённый хостинг картинок в 30 строк кода
2014-07-21 в 15:33, admin, рубрики: async, mongodb, python, tornadoВпервые слышите о tornado? Слышали, но боялись асинхронности? Смотрели на него более полугода назад? Тогда я посвящаю эту статью вам :)
Немного тестов производительности сетевых фреймворков
2014-07-02 в 15:03, admin, рубрики: autobench, eventlet, express.js, gevent, mongodb, nginx, node.js, python, siege, tornado, twisted, Веб-разработкаПривет! Пару месяцев назад я захотел провести тестирование производительности некоторых сетевых фреймворков, c целью понять насколько большая разбежка между ними. Надо ли использовать Node.js там, где хотелось бы Python с Gevent или нужен Ruby с его EventMachine.
Я хочу обратить ваше внимание на то, что эти материалы не являются руководством к выбору фреймворка и могут содержать спорные моменты. Я вообще не собирался публиковать результаты этого исследования, но когда они попадались мне на глаза я ловил себя на мысли, что это может быть кому-нибудь полезно. На этот пост я выделил не больше 4-ех часов, иначе он не появился бы, поэтому от орфографических ошибок, как и от любых других, я не застрахован. Теперь, когда вы ко всему готовы, я начну забрасывать вас графиками.
Читать полностью »
Тестируем ARM платформу Marvel Armada XP как хостинг для Python проекта
2014-03-20 в 10:41, admin, рубрики: memcached, postgres, python, redis, tornado, Серверная оптимизация, хостинг, метки: memcached, postgres, python, redis, tornado, АРМБлагодаря GlobaTel смог получить на тест один из серверов (модулей) как из этой статьи Сервер на ARM? Made in Russia!. Как вы понимаете хостинг на ARM, а не набившем оскомину x86, это как минимум свежо и возможно будет модно. Спасибо GlobaTel.
В этой заметке я не хочу сильно подымать тему производительности (но она будет), куда интереснее посмотреть насколько безпроблемно заведётся всё ПО моего проекта. Разворачивал я только ПО, базу картинок я никуда не перемещал. Так что под катом anime-picures.net т.е. nginx, Python+Pylons+SQLAlchemy, PostgreSQL, Memcached, Redis.
Сразу оговорюсь — заметка будет не последней, это только первое впечатление.
Начало проекта глазами разработчика
2014-02-04 в 22:48, admin, рубрики: html, tornado, Блог компании Tornado Technologies, веб-верстка, Веб-разработка, новичкам, метки: tornado, веб-верстка, новичкамВ этом посте я, как новичок в деле веб-дизайна, программирования и верстки, хотел бы рассказать о сложностях, с которыми столкнулся.
Я живу в двух городах. Уфе и Москве. Это трудно… Особенно в плане работы. Почему так сложилось — история другая. Я начинающий фрилансер.… И тут мне пишет друг. На тот момент мы были не особо-то близкими друзьями… Он предлагает сделать сайт. В отсутствии денег в кармане, я хватаюсь за нитку большого проекта, даже не понимая, во что он выливается для меня как для новичка.
С первых дней стало понятно, что намерения у друга серьезные. Являясь типичным примером ленивого кодера, я прилагал не много усилий, понимая что это на долго.
Вот тут-то и начинается наша история. Она началась с ТЗ.
Периодически я беру заказы на различные небольшие работы. Разработать дизайн, собрать его, сделать пару модулей, модифицировать что-то… В общем-то, по мелочи. И сейчас, уже обладая опытом общения, я могу радостно заявить, что мой шеф — редкий случай заказчика, умеющего конкретизировать свои мысли, расставить точки над “i” и войти, по-моему, в любое положение исполнителя.
Торнадо началось не с логотипа. Не с моделей… Торнадо началось с вектора движения. С идеи и горящих глаз. Проект, призванный облегчить жизнь не узкому кругу лиц, а всем, кому сможем.
Началось все с простого… Таблица, поля ввода…
Читать полностью »
Python на Хабре
2013-12-18 в 6:12, admin, рубрики: django, GIL, pygtk, pyqt4, python, python3, tkinter, tornado, twisted, wxpython, декораторы, обучение, Программирование, метки: Django, GIL, pygtk, pyqt4, python, python3, tkinter, tornado, twisted, wxpython, декораторы, обучение Некоторое время назад, в силу определенных причин, мне пришла в голову мысль о том, чтобы начать изучать какой-нибудь новый язык программирования. В качестве альтернатив для этого начинания я определил два языка: Java и Python. После продолжительного метания между ними и сопутствующих нытья и долбежки головой о стену (у меня с новыми языками всегда так — сомнения, раздумья, проблема выбора и т.д.), я все-таки остановился на Python. Окей, выбор сделан. Что дальше?
Читать полностью »
Centrifuge — так просто, как возможно, но не проще этого
2013-10-11 в 7:04, admin, рубрики: asynchronous, jquery, open source, python, sockjs, tornado, WebSocket, zeromq, Блог компании Mail.Ru Group, метки: asynchronous, jquery, python, real time, sockjs, tornado, WebSocket, zeromq
Привет!
Продолжая статьи о Центрифуге, мне хотелось бы обсудить один из способов подключения реал-тайм событий на сайт.
Суть отдельностоящих серверов рассылки сообщений в реальном времени такова, что клиенты из браузера должны подключиться к серверу, подписаться на нужные каналы и ждать сообщений из этих каналов.
Читать полностью »
Centrifuge набирает обороты
2013-09-23 в 7:32, admin, рубрики: asynchronous, open source, python, sockjs, tornado, WebSocket, zeromq, Веб-разработка, метки: asynchronous, python, real time, sockjs, tornado, WebSocket, zeromqПривет!
Пару месяцев назад я опубликовал на Хабре статью, посвященную описанию open-source проекта Centrifuge. Напомню, что это сервер рассылки сообщений подключенным клиентам (в основном из веб-браузера) в реальном времени. Написан на Python.
С тех пор я продолжал работать над проектом в свободное время и сейчас готов поделиться накопившимися мыслями и изменениями.