Frontik
сервер-агрегатор на python
Зачем frontik?
I
100%
08:00 20:00
Яндекс (XScript)
Mail.ru (FEST)
Выбрали XScript
• OpenSource
• Проверено
• XSLT
100%
08:00 20:00
Минусы XScript
• XML-based язык агрегации
• Нет доступа к кишкам
HTTP
• Сложность доработки
Что frontik?
II
Основной сценарий использования:
Frontik - application server,
основанный на Tornado Web Server
Tornado:
• AsyncHttpServer
• один поток выполнения
• ioloop...
• диспетчеризация запросов по URL
• HTTP опрос backend`ов
• парсинг, обработка и агрегация xml ответов
• XSLT шаблонизация...
Реальный пример
Как это работает:
Фичи от frontik`а
1. app-root/helloworld.py
class Page(frontik.page.PageHandler):
@set_xsl('helloworld.xsl')
def get_page(...
Фичи от frontik`а
2. Обработка ответов
def cb(xml, response):
nodes = xpath.Evaluate(..., xml)
if not nodes:
finish('Nothi...
Фичи от frontik`а
3. Future
placeholder = self.get_url(...)
self.doc.put(placeholder)
Фичи от frontik`а
4. SyncGroups
group=frontik.async.AsyncGroup(finish_cb)
self.get_url(request1, group.add(cb1))
self.post...
Фичи от frontik`а
5. Главное: простота развития
Быстрая и гибкая разработка на python
Как frontik?
III
→ xslt →xml ответ
Этапы трансформации
Было:
Cтало:
→ →xml ответ
xslt → пост-обработка
Пост-обработка
Fuchakubutsu
(переводы)
Пост-обработка
ссылки на
региональные
сайты
(200kb xml, 7k
nodes)
Кэш
Было:
поиск → загрузка найденного → XSLT → результат
Cтало:
поиск → memcached → → XSLT→ результат
дозагрузка
ненайдено...
Дублирование кода верстки
обвязка сайта
(jsp vs. xslt)
Обвязка сайта
Было:
browser ↔ jsp
Cтало:
browser ↔ frontik ↔ jsp
Проблемные места (они же — планы развития)
• Один процесс — однин тред — одно ядро процессора
• Блокировка обслуживания на...
http://github.com/hhru/frontik
http://github.com/AndrewSumin/hephaestus
http://hh.jsx.ru
Сервер-агрегатор на python (аля Xscript FEST), Сумин Андрей, Сабуренков Михаил и Труханов Павел
Upcoming SlideShare
Loading in …5
×

Сервер-агрегатор на python (аля Xscript FEST), Сумин Андрей, Сабуренков Михаил и Труханов Павел

1,671 views

Published on

Published in: Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,671
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
7
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Сервер-агрегатор на python (аля Xscript FEST), Сумин Андрей, Сабуренков Михаил и Труханов Павел

  1. 1. Frontik сервер-агрегатор на python
  2. 2. Зачем frontik? I
  3. 3. 100% 08:00 20:00
  4. 4. Яндекс (XScript) Mail.ru (FEST)
  5. 5. Выбрали XScript • OpenSource • Проверено • XSLT
  6. 6. 100% 08:00 20:00
  7. 7. Минусы XScript • XML-based язык агрегации • Нет доступа к кишкам HTTP • Сложность доработки
  8. 8. Что frontik? II
  9. 9. Основной сценарий использования:
  10. 10. Frontik - application server, основанный на Tornado Web Server Tornado: • AsyncHttpServer • один поток выполнения • ioloop • прием новых соединений • обработка (handling) • AsyncHttpClient Как сделано
  11. 11. • диспетчеризация запросов по URL • HTTP опрос backend`ов • парсинг, обработка и агрегация xml ответов • XSLT шаблонизация Где же тут Frontik?
  12. 12. Реальный пример
  13. 13. Как это работает:
  14. 14. Фичи от frontik`а 1. app-root/helloworld.py class Page(frontik.page.PageHandler): @set_xsl('helloworld.xsl') def get_page(self, request): res = etree.Element('hello') res.text = 'world' self.doc.put(res)
  15. 15. Фичи от frontik`а 2. Обработка ответов def cb(xml, response): nodes = xpath.Evaluate(..., xml) if not nodes: finish('Nothing found!') else: ... self.get_url(request, cb)
  16. 16. Фичи от frontik`а 3. Future placeholder = self.get_url(...) self.doc.put(placeholder)
  17. 17. Фичи от frontik`а 4. SyncGroups group=frontik.async.AsyncGroup(finish_cb) self.get_url(request1, group.add(cb1)) self.post_url(request2, group.add(cb2))
  18. 18. Фичи от frontik`а 5. Главное: простота развития Быстрая и гибкая разработка на python
  19. 19. Как frontik? III
  20. 20. → xslt →xml ответ Этапы трансформации Было: Cтало: → →xml ответ xslt → пост-обработка
  21. 21. Пост-обработка Fuchakubutsu (переводы)
  22. 22. Пост-обработка ссылки на региональные сайты (200kb xml, 7k nodes)
  23. 23. Кэш Было: поиск → загрузка найденного → XSLT → результат Cтало: поиск → memcached → → XSLT→ результат дозагрузка ненайденого в кеше
  24. 24. Дублирование кода верстки обвязка сайта (jsp vs. xslt)
  25. 25. Обвязка сайта Было: browser ↔ jsp Cтало: browser ↔ frontik ↔ jsp
  26. 26. Проблемные места (они же — планы развития) • Один процесс — однин тред — одно ядро процессора • Блокировка обслуживания на время вычислений • Отсутствие стриминга • Спагетти-код
  27. 27. http://github.com/hhru/frontik http://github.com/AndrewSumin/hephaestus http://hh.jsx.ru

×