Сервер-агрегатор на python (аля xscript fest), Сумин Андрей,...
DESCRIPTION
TRANSCRIPT
![Page 1: Сервер-агрегатор на python (аля Xscript FEST), Сумин Андрей, Сабуренков Михаил и Труханов Павел](https://reader030.vdocuments.site/reader030/viewer/2022020716/54922e7eb47959072a8b52fa/html5/thumbnails/1.jpg)
Frontikсервер-агрегатор на python
![Page 2: Сервер-агрегатор на python (аля Xscript FEST), Сумин Андрей, Сабуренков Михаил и Труханов Павел](https://reader030.vdocuments.site/reader030/viewer/2022020716/54922e7eb47959072a8b52fa/html5/thumbnails/2.jpg)
Зачем frontik?
I
![Page 3: Сервер-агрегатор на python (аля Xscript FEST), Сумин Андрей, Сабуренков Михаил и Труханов Павел](https://reader030.vdocuments.site/reader030/viewer/2022020716/54922e7eb47959072a8b52fa/html5/thumbnails/3.jpg)
100%
08:00 20:00
![Page 4: Сервер-агрегатор на python (аля Xscript FEST), Сумин Андрей, Сабуренков Михаил и Труханов Павел](https://reader030.vdocuments.site/reader030/viewer/2022020716/54922e7eb47959072a8b52fa/html5/thumbnails/4.jpg)
![Page 5: Сервер-агрегатор на python (аля Xscript FEST), Сумин Андрей, Сабуренков Михаил и Труханов Павел](https://reader030.vdocuments.site/reader030/viewer/2022020716/54922e7eb47959072a8b52fa/html5/thumbnails/5.jpg)
Яндекс (XScript)
Mail.ru (FEST)
![Page 6: Сервер-агрегатор на python (аля Xscript FEST), Сумин Андрей, Сабуренков Михаил и Труханов Павел](https://reader030.vdocuments.site/reader030/viewer/2022020716/54922e7eb47959072a8b52fa/html5/thumbnails/6.jpg)
Выбрали XScript
• OpenSource• Проверено• XSLT
![Page 7: Сервер-агрегатор на python (аля Xscript FEST), Сумин Андрей, Сабуренков Михаил и Труханов Павел](https://reader030.vdocuments.site/reader030/viewer/2022020716/54922e7eb47959072a8b52fa/html5/thumbnails/7.jpg)
100%
08:00 20:00
![Page 8: Сервер-агрегатор на python (аля Xscript FEST), Сумин Андрей, Сабуренков Михаил и Труханов Павел](https://reader030.vdocuments.site/reader030/viewer/2022020716/54922e7eb47959072a8b52fa/html5/thumbnails/8.jpg)
Минусы XScript
• XML-based язык агрегации• Нет доступа к кишкам HTTP• Сложность доработки
![Page 9: Сервер-агрегатор на python (аля Xscript FEST), Сумин Андрей, Сабуренков Михаил и Труханов Павел](https://reader030.vdocuments.site/reader030/viewer/2022020716/54922e7eb47959072a8b52fa/html5/thumbnails/9.jpg)
Что frontik?
II
![Page 10: Сервер-агрегатор на python (аля Xscript FEST), Сумин Андрей, Сабуренков Михаил и Труханов Павел](https://reader030.vdocuments.site/reader030/viewer/2022020716/54922e7eb47959072a8b52fa/html5/thumbnails/10.jpg)
Основной сценарий использования:
![Page 11: Сервер-агрегатор на python (аля Xscript FEST), Сумин Андрей, Сабуренков Михаил и Труханов Павел](https://reader030.vdocuments.site/reader030/viewer/2022020716/54922e7eb47959072a8b52fa/html5/thumbnails/11.jpg)
Frontik - application server, основанный на Tornado Web Server Tornado:• AsyncHttpServer• один поток выполнения• ioloop • прием новых соединений • обработка (handling)• AsyncHttpClient
Как сделано
![Page 12: Сервер-агрегатор на python (аля Xscript FEST), Сумин Андрей, Сабуренков Михаил и Труханов Павел](https://reader030.vdocuments.site/reader030/viewer/2022020716/54922e7eb47959072a8b52fa/html5/thumbnails/12.jpg)
• диспетчеризация запросов по URL• HTTP опрос backend`ов • парсинг, обработка и агрегация xml ответов • XSLT шаблонизация
Где же тут Frontik?
![Page 13: Сервер-агрегатор на python (аля Xscript FEST), Сумин Андрей, Сабуренков Михаил и Труханов Павел](https://reader030.vdocuments.site/reader030/viewer/2022020716/54922e7eb47959072a8b52fa/html5/thumbnails/13.jpg)
Реальный пример
![Page 14: Сервер-агрегатор на python (аля Xscript FEST), Сумин Андрей, Сабуренков Михаил и Труханов Павел](https://reader030.vdocuments.site/reader030/viewer/2022020716/54922e7eb47959072a8b52fa/html5/thumbnails/14.jpg)
Как это работает:
![Page 15: Сервер-агрегатор на python (аля Xscript FEST), Сумин Андрей, Сабуренков Михаил и Труханов Павел](https://reader030.vdocuments.site/reader030/viewer/2022020716/54922e7eb47959072a8b52fa/html5/thumbnails/15.jpg)
Фичи от 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)
![Page 16: Сервер-агрегатор на python (аля Xscript FEST), Сумин Андрей, Сабуренков Михаил и Труханов Павел](https://reader030.vdocuments.site/reader030/viewer/2022020716/54922e7eb47959072a8b52fa/html5/thumbnails/16.jpg)
Фичи от frontik`а
2. Обработка ответов
def cb(xml, response): nodes = xpath.Evaluate(..., xml) if not nodes: finish('Nothing found!') else: ...self.get_url(request, cb)
![Page 17: Сервер-агрегатор на python (аля Xscript FEST), Сумин Андрей, Сабуренков Михаил и Труханов Павел](https://reader030.vdocuments.site/reader030/viewer/2022020716/54922e7eb47959072a8b52fa/html5/thumbnails/17.jpg)
Фичи от frontik`а
3. Future
placeholder = self.get_url(...)
self.doc.put(placeholder)
![Page 18: Сервер-агрегатор на python (аля Xscript FEST), Сумин Андрей, Сабуренков Михаил и Труханов Павел](https://reader030.vdocuments.site/reader030/viewer/2022020716/54922e7eb47959072a8b52fa/html5/thumbnails/18.jpg)
Фичи от frontik`а
4. SyncGroups
group=frontik.async.AsyncGroup(finish_cb)
self.get_url(request1, group.add(cb1))
self.post_url(request2, group.add(cb2))
![Page 19: Сервер-агрегатор на python (аля Xscript FEST), Сумин Андрей, Сабуренков Михаил и Труханов Павел](https://reader030.vdocuments.site/reader030/viewer/2022020716/54922e7eb47959072a8b52fa/html5/thumbnails/19.jpg)
Фичи от frontik`а
5. Главное: простота развития
Быстрая и гибкая разработка на python
![Page 20: Сервер-агрегатор на python (аля Xscript FEST), Сумин Андрей, Сабуренков Михаил и Труханов Павел](https://reader030.vdocuments.site/reader030/viewer/2022020716/54922e7eb47959072a8b52fa/html5/thumbnails/20.jpg)
Как frontik?
III
![Page 21: Сервер-агрегатор на python (аля Xscript FEST), Сумин Андрей, Сабуренков Михаил и Труханов Павел](https://reader030.vdocuments.site/reader030/viewer/2022020716/54922e7eb47959072a8b52fa/html5/thumbnails/21.jpg)
→ xslt →xml ответ
Этапы трансформации
Было:
Cтало:
→ →xml ответxslt → пост-обработка
![Page 22: Сервер-агрегатор на python (аля Xscript FEST), Сумин Андрей, Сабуренков Михаил и Труханов Павел](https://reader030.vdocuments.site/reader030/viewer/2022020716/54922e7eb47959072a8b52fa/html5/thumbnails/22.jpg)
Пост-обработка
Fuchakubutsu(переводы)
![Page 23: Сервер-агрегатор на python (аля Xscript FEST), Сумин Андрей, Сабуренков Михаил и Труханов Павел](https://reader030.vdocuments.site/reader030/viewer/2022020716/54922e7eb47959072a8b52fa/html5/thumbnails/23.jpg)
Пост-обработка
ссылки на региональные сайты(200kb xml, 7k nodes)
![Page 24: Сервер-агрегатор на python (аля Xscript FEST), Сумин Андрей, Сабуренков Михаил и Труханов Павел](https://reader030.vdocuments.site/reader030/viewer/2022020716/54922e7eb47959072a8b52fa/html5/thumbnails/24.jpg)
Кэш
Было: поиск → загрузка найденного → XSLT → результат
Cтало: поиск → memcached → → XSLT→ результат
дозагрузка ненайденого в кеше
![Page 25: Сервер-агрегатор на python (аля Xscript FEST), Сумин Андрей, Сабуренков Михаил и Труханов Павел](https://reader030.vdocuments.site/reader030/viewer/2022020716/54922e7eb47959072a8b52fa/html5/thumbnails/25.jpg)
Дублирование кода верстки
обвязка сайта (jsp vs. xslt)
![Page 26: Сервер-агрегатор на python (аля Xscript FEST), Сумин Андрей, Сабуренков Михаил и Труханов Павел](https://reader030.vdocuments.site/reader030/viewer/2022020716/54922e7eb47959072a8b52fa/html5/thumbnails/26.jpg)
Обвязка сайта
Было: browser ↔ jsp Cтало: browser ↔ frontik ↔ jsp
![Page 27: Сервер-агрегатор на python (аля Xscript FEST), Сумин Андрей, Сабуренков Михаил и Труханов Павел](https://reader030.vdocuments.site/reader030/viewer/2022020716/54922e7eb47959072a8b52fa/html5/thumbnails/27.jpg)
Проблемные места (они же — планы развития) • Один процесс — однин тред — одно ядро процессора
• Блокировка обслуживания на время вычислений • Отсутствие стриминга
• Спагетти-код
![Page 28: Сервер-агрегатор на python (аля Xscript FEST), Сумин Андрей, Сабуренков Михаил и Труханов Павел](https://reader030.vdocuments.site/reader030/viewer/2022020716/54922e7eb47959072a8b52fa/html5/thumbnails/28.jpg)
http://github.com/hhru/frontik
http://github.com/AndrewSumin/hephaestus
http://hh.jsx.ru