Сегодня вышел Google App Engine 1.5.0. Кроме большого числа пофикшенных багов, появилось несколько достаточно интересных изменений.

Среди них стоит отметить такие:

 

  • Backends - постоянно запущенный инстанс одной из четырех конфигураций, который не связан с запросами (http requests) и может занимать до 1GB памяти. Один из способов применения - генерация отчетов, которая занимает много времени или другие ресурсоемкие задач
  • Изменения в Task Queue - поддержка pull-запросов, увеличение лимита на используемую память
  • Размер HTTP Request и Response увеличен до 32MB
  • High Replication Datastore теперь является хранилищем по умолчанию для новых приложений
  • Много изменений, связанных с квотами - некоторые были увеличены, а некоторые, наоборот - уменьшены
  • К моему сожалению, Full Text Search еще не закончили :(. 

 

 Отдельным пунктом хочу отметить экспериментальную поддержку языка программирования Go. Новости об этом языке, в основном, проходили мимо меня и я только иногда слышал упоминания о нем. Теперь же, когда Google добавил пусть и эксперементальную, но все-же поддержку, то многие захотят посмотреть на него более внимательно. Особенно, учитывая то, что он создан для ресурсо(процессоро)-емких задач будет компилироваться в native code.

Ссылки по теме:

 

 

 

 P.S. Интересно, насколько будет популярен Go в Украине через полгода-год, по сравнению с Python и Ruby?


DevTime прошел, а отчёт так и не был написан. В этот раз писать буду мало и только об одном докладчике. Вообщем могло быть и хуже, могло быть и лучше. Если коротко - сказывается недостаток выступлений на публику. Это был 3-й доклад, предыдущие два были для UNETA. Буду стараться в будущем делать лучше и больше.

Собстенно, сам доклад (видео):

 

Презентация:

 

 

Примеры кода, уже традиционно, на github: https://github.com/e0ne/events/tree/master/devtime/tipfy

 

P.S. Ну хоть один пост написал в этом месяце...


Dev Time #4 - Python

Published 3/31/2011 by e0ne in Events | Python | Web Development

Среда, 13 апреля этого года должна была пройти так же, как и остальные среды, но не тут-то было. В этот день состоится очередная встреча харьковского сообщества разработчиков Dev Time (мой отчет с первой встречи: http://blog.e0ne.info/post/First-Kharkov-DevTime-event-summary.aspx). 

Особенностью этой встречи будет то, что это первое подобное события на моей памяти в Харькове, посвященное языку программирования Python. О Python будет говорить Настя Хоменко aka @Eva__Brown с докладом "Python Tips" (детали уточняются). Вторым докладчиком буду я. И поговорю я о Google App Engine и web фреймворке tipfy

Примерное содержание моего доклада:

  • Goole App Engine (GAE) и Python
  • Почему не Django?
  • Преимущества и недостатки фреймворка tipfy
  • Быстрая разработка веб-приложений с помощью фреймворка tipfy
  • Расширяем tipfy или "после сборке доработать напильником"

Пожелания, относительно моего доклада, приветствуются. 

Приходите, надеюсь вам понравится.

 

P.S. Для посещения мероприятие чтение поста "tipfy - маленький, но мощьный web framework для GAE" является не обязательным, а вот регистрация на сайте Dev Time - обязательна.


 

Так уж сложилось, что мне было необходимо выбрать framework для разработки небольшого приложения на python + GAE. Первым делом я посмотрел в сторону Django и немного огорчился, узнав что теперь GAE team рекомендуют использовать форк django-nonrel - практически тот же django, но дающий возможность простой работы с NoSQL базами данных. Так как django-nonrel все ещё не достиг версии 1.0 и имеет ряд недоработок, которые разработчики обещают исправить в ближайшее время. Из недостатков, которые для меня оказались решающими стоит отметить - не работает с GAE “из коробки”, соответственно необходимо многое доустанавливать-настраивать руками, на что не хотелось тратить время. Позже я обязательно напишу про этот фреймворк, но уже на примере django-nonrel + MongoDB. Тем временем мне порекомендовали посмотреть в сторону tipfy, на котором я остановился и о котором написан этот пост.

Как написано на сайте http://www.tipfy.org/, tipfy - маленький, но мощьный web framework, сделанный специально для GAE (“tipfy is a small but powerful framework made specifically for Google App Engine”). Текущая версия - 0.6.4, что говорит нам о том, что у него всё ещё впереди.

tipfy действительно очень маленький и быстрый, но благодаря расширениям (extensions) быстро приобретает необходимую функциональность. Посмотрим на структуру архива, который можно скачать по адресу http://www.tipfy.org/tipfy.zip

 

 

 

Всё, что лежит в корне архиве необходимо только для сборки своей версии tipfy, с добавленными или отключенными расширениями. К слову, добавление или отключение какого-либо расширение осуществляется редактированием всего одной строчки в файле buildout.cfg и запуском билд-скрипта, который загрузит и установит нужные расширения. Подробнее об этом можно почитать на странице http://www.tipfy.org/wiki/guide/extensions/#adding-or-removing-extensions

 

Всё, что необходимо для запуска и работы приложения находится в каталоге app. Как видно на скриншоте, там уже есть приложение “hello world” (куда же без него? :)). После “hello world” сразу же бросается в глаза jinja2 - достаточно известный template engine с хорошей докоментацией и сообществом. Если по каким-то причинам вам не нравится(перечеркнуто) подходит jinja, можно использовать Genshi или Mako.

В целом, приложение с использованием tipfy практически ничем не отличается от любого MVC-приложения, за исключением, конечно, специфики фреймворка.

Рассмотрим приложение “hello world” более детально.

Так как, это достаточно простой пример, то никакой модели нет. Но в случае необходимости - модели будут представлять собой обычные классы, наследуемые от GAE db.Model:

 

Наше приложение состоит из двух модулей (url.py и handlers.py) и одного шаблона (hello_world.html).

urls.py:

Содержит правила маппинга url-адресов на обработчики. По умолчанию их два:

 

  • Rule('/', endpoint='hello-world', handler='apps.hello_world.handlers.HelloWorldHandler') - указывает какой обработчик должен обрабатывать default page
  • Rule('/pretty', endpoint='hello-world-pretty', handler='apps.hello_world.handlers.PrettyHelloWorldHandler') - обработчик, который выполнится при открытии http://yoursite.com/pretty

 

handlers.py:

Каджый handler представляет собой класс, который наследуется от RequestHandler и имеет методы get(), post и др. для обработки соответствующих типов запросов.

В нашем случай это: 

 

 

 

В целом отмечу что переход с django на tipfy не вызывает никаких трудностей, только несколько маленьких неудобств, а именно: отсутствие уже готовой админки (частично, её может заменить аналога приложения в GAE) и другой template engine (хотя, многие успешно используют jinja в djanпo).

Такое короткое введение в tipfy и GAE. Продолжение следует...