Веб-разработка → Всё самое модное
Начитавшись в интернете про новые, простые, быстрые и масштабируемые технологии, захотелось их всех попробовать. Вдруг они окажутся лучше уже привычной мне связки postgresql + django + json-rpc.
Так как никакой идеи не было, но был свободный домен uglyrater.org — пришлось делать рейтинг.
Суть проста: есть список пользователей, которым можно расставить + и -. Новые пользователи в рейтинг добавляются по адресу страницы ВКонтакте.
Идея проекта
Так как никакой идеи не было, но был свободный домен uglyrater.org — пришлось делать рейтинг.
Суть проста: есть список пользователей, которым можно расставить + и -. Новые пользователи в рейтинг добавляются по адресу страницы ВКонтакте.
Python → Исследование производительности сервера SockJS
Доброе время суток!
Так уж сложилось, что я занимаюсь всякими разнообразными push технологиями с использованием Tornado. Чуть ранее описывал Tornadio2, серверную реализацию протокола socket.io поверх Tornado.
Теперь хочу представить похожий проект — sockjs-tornado.
Для тех кому не очень интересно, есть другая полезная информация: сравнительное нагрузочное тестирование PyPy 1.7 против CPython 2.6.6, sockjs-node и socket.io (оба на node.js 0.6.5). Все под катом :-)
Так уж сложилось, что я занимаюсь всякими разнообразными push технологиями с использованием Tornado. Чуть ранее описывал Tornadio2, серверную реализацию протокола socket.io поверх Tornado.
Теперь хочу представить похожий проект — sockjs-tornado.
Для тех кому не очень интересно, есть другая полезная информация: сравнительное нагрузочное тестирование PyPy 1.7 против CPython 2.6.6, sockjs-node и socket.io (оба на node.js 0.6.5). Все под катом :-)
Веб-разработка → Inline-callback в tornado server для asyncmongo
Пару недель назад разработчики tornado добавили нативный модуль по созданию inline callback (аналог inlineCallbacks в Twisted, Seq в Node.js, Fibers в Ruby).
Ниже примеры использования и примеры с участием asyncmongo (асинхронным драйвером для mongoDB)
Ниже примеры использования и примеры с участием asyncmongo (асинхронным драйвером для mongoDB)
Веб-разработка → Демо-чат на WebSockets, Tornado, MongoDB
Читая статьи на хабре о веб-сокетах, сильно захотелось что-нибудь написать на них. После долгих поисков я выбрал Tornado Web Server, в качестве сервера, ведь он написан на Питоне, да и он похож на GAE.
Python → Вышел 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
Python → Асинхронный удар из песочницы
Как уже наверное кто-то догадался, в этой статье речь пойдет о сокетах, и фреймфорках облегчающих работу с ними. Недавно я начал работу надо новым проектом, онлайн игрой. Для таких проектов довольно критично время ответа от сервера, если это конечно не пошаговая стратегия, хотя и в этом случае пожалуй тоже. Так как же этого добиться при суровой ограниченности ресурсов?- Облегчить сервер от ненужной работы, например отрисовки самой странички, используя вместо этого javascript шаблонизатор.
- Использовать хороший front-end, например nginx, учитывая пункт первый, динамики у нас нет, и это нам вполне подходит.
- Распределяя нагрузку на frontend, например используя Tornado.
Остался самый главный вопрос, что будет происходить когда пользователь совершает какое-либо действие? Обычные ajax запросы не подойдут, вполне понятно почему. Поэтому нам на помощь приходят сокеты.
Серверная оптимизация → Многопоточное приложение под Tornado

В документации к неблокирующему вебсерверу Торнадо красиво расписано как здорово он справляется с нагрузкой, и вообще является венцом творения человечества в области неблокирующих серверов. Отчасти это верно. Но при построении сложных приложений за рамками «еще одного чата» выявляется много неочевидных и тонких моментов, о которых желательно знать до вояжа по граблям. Под «катом» разработчики клуба интелектуальных игр Трельяж готовы поделиться своими мыслями о подводных камнях.
Python → Вышла версия 1.0 фреймворка Tornado

Популярный проект, по созданию неблокирующего web-сервера и «сопутствующего» фреймворка на языке Python, объявил о релизе версии 1.0.
Скачать новую версию можно тут: github.com/downloads/facebook/tornado/tornado-1.0.tar.gz
По сравнению с последним релизом версии 0.2, было добавлено множество новшеств,
— возможность запуска WSGI-приложений, под управлением сервера Tornado (например приложения Django и CherryPy)
— улучшенная производительность в MacOS X (с использованием kqueue) и экспериментальная поддержка win32
— переписан класс AsyncHTTPClient
— поддержка .mo файлов в модуле локализации
— поддержка пре-форкинга для запуска нескольких процессов Tornado
— поддержка SSL и gzip в HTTP-сервере
И многое другое.
Python → Документация tornado на русском языке
Хотим представить вашему вниманию русскоязычную версию руководства tornado server 0.2
Персональные блоги → Agatsuma: многофункциональная надстройка над Tornado (и не только)
Введение. Фреймворки общего назначения.
Веб-фреймворков для Python много. Или даже очень много.
Я успел поработать с Django и Pylons. Каждый из этих фреймворков дает программисту огромное число возможностей, но у них есть одна существенная особенность — они блокирующие. Для того, чтобы иметь возможность одновременно обрабатывать несколько запросов приходится, в общем случае, запускать несколько копий приложения.