Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Питон под нагрузкой, Андрей Сумин, HeadHunter
Search
IT-People
July 25, 2016
Programming
0
120
Питон под нагрузкой, Андрей Сумин, HeadHunter
Выступление на конференции PyCon Russia 2016
IT-People
July 25, 2016
Tweet
Share
More Decks by IT-People
See All by IT-People
Александр Кошкин, Positive Technologies: Знай и люби свой CPython во имя луны и великой справедливости
itpeople123
1
200
How Python was Shaped by leaky Internals, Armin Ronacher, Flask framework
itpeople123
1
230
Building social network with Neo4j and Python, Андрей Солдатенко, Toptal
itpeople123
1
230
Осторожно, DSL! Иван Цыганов, Positive Technologies
itpeople123
0
120
Докеризация веб-приложения на Python Антон Егоров, Ostrovok.ru
itpeople123
0
190
Python Robot Operating System вместо Middleware framework Дмитрий Киселев, Endpoint.com
itpeople123
0
100
Falcon — очередная WSGI библиотека? Дмитрий Кукушкин, Wargaming
itpeople123
0
270
Очереди задач без купюр, Артем Малышев, Positive Technologies
itpeople123
1
110
Flame graph: новый взгляд на привычное профилирование, Кирилл Борисов, Яндекс
itpeople123
1
260
Other Decks in Programming
See All in Programming
モビリティSaaSにおけるデータ利活用の発展
nealle
0
200
知られているようで知られていない JavaScriptの仕様 4選
syumai
0
600
例外処理を理解して、設計段階からエラーを見つけやすく、起こりにくく #phpconfuk
kajitack
12
6.1k
「10分以内に機能を消せる状態」 の実現のためにやっていること
togishima
1
430
SUZURIの規約違反チェックにおけるクリエイタフィードバックの試⾏錯誤/Trial and Error in Creator Feedback for SUZURI's Terms of Service Violation Checks
ae14watanabe
1
150
Private APIの呼び出し方
kishikawakatsumi
3
880
JJUG CCC 2025 Fall: Virtual Thread Deep Dive
ternbusty
3
420
チーム開発の “地ならし"
konifar
7
4.7k
競馬で学ぶ機械学習の基本と実践 / Machine Learning with Horse Racing
shoheimitani
13
12k
Eloquentを使ってどこまでコードの治安を保てるのか?を新人が考察してみた
itokoh0405
0
3.2k
AI駆動開発ライフサイクル(AI-DLC)のホワイトペーパーを解説
swxhariu5
0
970
Bakuraku E2E Scenario Test System Architecture #bakuraku_qa_study
teyamagu
PRO
0
750
Featured
See All Featured
Rails Girls Zürich Keynote
gr2m
95
14k
Thoughts on Productivity
jonyablonski
73
4.9k
Art, The Web, and Tiny UX
lynnandtonic
303
21k
The Invisible Side of Design
smashingmag
302
51k
Fashionably flexible responsive web design (full day workshop)
malarkey
407
66k
How to train your dragon (web standard)
notwaldorf
97
6.4k
Building a Modern Day E-commerce SEO Strategy
aleyda
45
8.1k
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
658
61k
We Have a Design System, Now What?
morganepeng
54
7.9k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
33
1.8k
Visualization
eitanlees
150
16k
Transcript
Питон под нагрузкой Сумин Андрей, hh.ru
None
Основные фронтенды ~ 1500 RPS
Сервис интеграционной логики ~ 2500 RPS
Сходить в бекенды Обработать ответы Применить шаблон Наложить переводы Запрос
Ответ
https://github.com/hhru/tornado https://github.com/hhru/frontik
None
None
for emp in xml.findall('employer-group/employer'): vacancies = set(emp.xpath('vacancies/id/text()')) if len(vacancies) <=
10: get_short_vacancies(self, vacancies)
None
Curl story http-клиент Дай резюме Васи Дай резюме Пети Бекенд
Таймаут http-клиент
Баги в Питоне Воркэраунды (например для urlparse.urlsplit)
Баги в Питоне Воркэраунды (например для urlparse.urlsplit) Cookie — использовать
в исходном виде нельзя
IOLoop while True: run_callbacks() run_timeouts() for fd, event in select.epoll():
run_handler(fd, event)
Что нельзя? — никаких долгих вычислений
Что нельзя? — никаких долгих вычислений — синхронные походы в
базу/кеш — проблема
Что нельзя? — никаких долгих вычислений — синхронные походы в
базу/кеш — проблема — даже резолвинг ДНС чаще всего блокирующий
Что нельзя? — никаких долгих вычислений — синхронные походы в
базу/кеш — проблема — даже резолвинг ДНС чаще всего блокирующий — логирование может стать проблемой!
None
Треды спасают мир — в сишной либе можно явно отпустить
GIL (с помощью макроса Py_BEGIN_ALLOW_THREADS / Py_END_ALLOW_THREADS)
None
None
None
Три закона — пользователи способны на всё
Три закона — пользователи способны на всё — всё что
может произойти — произойдёт
Три закона — пользователи способны на всё — всё что
может произойти — произойдёт — всё что может упасть — упадёт
Три рецепта — проводите нагрузочное тестирование
Три рецепта — проводите нагрузочное тестирование — измеряйте потерянную прибыль
Три рецепта — проводите нагрузочное тестирование — измеряйте потерянную прибыль
— вкладывайтесь в инфраструктуру
Вопросы?
[email protected]