LINUX.ORG.RU

[Поругайте] Небольшая надстройка над Tornado


0

0

Приветствую уважаемый LOR.

Между всякими делами посмотрел на Tornado. Фреймворк очень понравился своей минималистичностью и производительностью. Не очень понравилось то, что в комплекте с ним нет хелперов для выполнения тяжелых задач в отдельных потоках или процессах, а также отсутствие заточек под нормальный орм и убогая обертка над моськой в комплекте.

В общем, решил я немного испоганить торнадо своими кривыми ручками и написал обертку, которая умеет:

1. Динамически подгружать куски приложения из плагинов и разруливать зависимости. Вообще говоря, любое приложение превращается в набор плагинов, реализующих те или иные интерфейсы

2. Запускать тяжелые задачи в отдельных процессах и обмениваться данными с главным процессом

3. Упрощать работу с логами и настройками приложения

Пока что это proof-of-concept, хотя для моих задач достаточно, следующие поделки буду делать с использованием этой штуки. Есть один крупный косяк: остановка сервера возможна только сигкиллом и после этого могут остаться висеть лишние процессы. Потом исправлю.

Прошу адекватной критики, пожеланий и комментариев. Идея плагинов честно стырена из http://www.linux.org.ru/news/opensource/4033808

Взять можно тут: http://github.com/FeiWongReed/agatsuma . В комплекте идет демка, проясняющая все идеи и возможности.

Черт, в разделе висит две темы из класса «посмотрите-оцените» и всем на них плевать, зато в холиварных топиках куча ответов.

Ничерта не меняется на ЛОРе уже лет семь, братцы.

FeiWongReed ()
Ответ на: комментарий от FeiWongReed

Я наоборот холивары обхожу стороной :). Просто не секу в твоём вопросе.

true_admin ★★★★★ ()

Слишком специализированно. Нужно чтобы библиотека работала с любым сервером. Для примера — я сейчас пишу приложение на flask, используя встроенный сервер (удобная отладка, автоматический рестарт), а в продакшене оно будет запускаться под gevent или тем же tornado.

Большинство питонячьих наработок совместимо с wsgi и глупо циклиться на одном сервере, когда простор для деплоя так широк.

P.S. Да, в любом случае, для отложенного выполнения задач я буду использовать очереди сообщений вместо сабжевых костылей.

anonymous ()
Ответ на: комментарий от anonymous

Ну, адаптировать библиотеку под другой фреймворк несложно Если сама идея нравится и будут просьбы перенести в другие места - сделаю. В конце-концов, сама идея взята из чужого проекта и доработана. Там были Pylons.

Встроенный сервер и авторестарт в торнадо есть. Вообще, мне он нравится, на другие фреймворки смотреть уже не хочется.

По поводу костылей. Не знаю, может и костыли. Но вроде удобно. Тем более, это не совсем отложенное исполнение. Это просто вынос ресурсоемких частей обработки запроса в другой процесс. Причем двумя способами. Когда торнадо научится само форкаться, может вообще это выкину.

FeiWongReed ()
Ответ на: комментарий от FeiWongReed

> Встроенный сервер и авторестарт в торнадо есть. Вообще, мне он нравится, на другие фреймворки смотреть уже не хочется.

Все, твой пойнт понятен. Ты используешь торнадо как фреймворк, а не как wsgi сервер, отсюда желание получить некоторые удобства. Что ж, успехов.

И немножко мыслей про нишу торнадо. Судя по количеству форков на гитхабе, он используеться для решения конкретных специализированных задач. Кодовая база маленькая, простая, поэтому допиливаеся до нужного состояния без проблем. Да что там, даже я форкал торнадо, чтоб добавить поддержку unix sockets для организации очереди сообщений с приоритетами. А как фреймворк общего назначения... Очень, очень много надо доделывать.

anonymous ()
Ответ на: комментарий от anonymous

Доделывать надо, но чего именно тебе не хватает?

Мне на данный момент - только нормальных сессий, генератора урлов и кастомизации вывода при ошибках.

Это я планирую так или иначе решить.

FeiWongReed ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.