Виталий Глибин, HeadHunter
модульный подход к разработке программного обеспечения, основанный на использовании распределённых, слабо связанных заменяемых компонентов со стандартизированными интерфейсами и протоколам взаимодействия.
Источник: Wikipedia
Источник: Akamai
class Page(page.PageHandler):
@page.user_page(xsl='pages/index.xsl')
def get_page(self):
self.doc.put(
self.get_url('{}/resumes'.format(resumeHost)),
self.get_url('{}/negotiations'.format(negHost))
)
def session(handler, callback):
def _session_callback(session):
handler.session = session
callback()
session_client.get_session(_session_callback, ...)
class MobilePageHandler(tortik.page.RequestHandler):
preprocessors = [
session,
pagedata
]
self.add('name', data)
- аналог self.doc.put() во Frontik'е self.complete({'name': data})
def get(self):
self.add('server_time', int(time.time))
self.add('data', {...})
self.complete()
def template(handler, data, callback):
out = template_engine.render(handler.template_name,
data=handler.get_data())
callback(handler, out)
class MobilePageHandler(tortik.page.RequestHandler):
postprocessors = [
template,
translation
]
self.fetch_requests([
self.make_request(
name='vacancies',
method='GET',
full_url='https://api.hh.ru/vacancies/8252535'),
...
], callback=self.complete)
self.fetch_requests([
('vacancies', 'https://api.hh.ru/vacancies/8252535'),
...
], callback=_cb)
def _cb():
response = self.responses['vacancies']
data = response.data # json или xml
# плюс автоматический
# self.add('vacancies', response.data)
self.complete()
handler.log.stage_started('render')
# do some hard render stuff
handler.log.stage_complete('render')
handler.fetch_requests(
...
callback=_cb,
stage='session'
)
MONIK handler=hhmobile.pages.Page method=GET code=200
total=93 session=13.98 page=47.14 render=21.77
translation=7.30
MONIK handler=hhmobile.pages.Page method=GET code=200
total=93 session=13.98 page=47.14 render=21.77
translation=7.30
MONIK handler=hhmobile.pages.Page method=GET code=200
total=93 session=13.98 page=47.14 render=21.77
translation=7.30
MONIK handler=hhmobile.pages.Page method=GET code=200
total=93 session=13.98 page=47.14 render=21.77
translation=7.30
Виталий Глибин, HeadHunter
@glibin, glibin.ru