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
190
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
98
Falcon — очередная WSGI библиотека? Дмитрий Кукушкин, Wargaming
itpeople123
0
260
Очереди задач без купюр, Артем Малышев, Positive Technologies
itpeople123
1
110
Flame graph: новый взгляд на привычное профилирование, Кирилл Борисов, Яндекс
itpeople123
1
240
Other Decks in Programming
See All in Programming
Android 15以上でPDFのテキスト検索を爆速開発!
tonionagauzzi
0
180
대규모 트래픽을 처리하는 프론트 개발자의 전략
maryang
0
110
Streamlitで実現できるようになったこと、実現してくれたこと
ayumu_yamaguchi
2
270
なぜ今、Terraformの本を書いたのか? - 著者陣に聞く!『Terraformではじめる実践IaC』登壇資料
fufuhu
3
370
Bedrock AgentCore ObservabilityによるAIエージェントの運用
licux
8
550
NEWT Backend Evolution
xpromx
1
170
なぜあなたのオブザーバビリティ導入は頓挫するのか
ryota_hnk
5
550
MySQL9でベクトルカラム登場!PHP×AWSでのAI/類似検索はこう変わる
suguruooki
1
280
Flutterと Vibe Coding で個人開発!
hyshu
1
210
ご注文の差分はこちらですか? 〜 AWS CDK のいろいろな差分検出と安全なデプロイ
konokenj
5
750
MCPで実現できる、Webサービス利用体験について
syumai
7
2.3k
抽象化という思考のツール - 理解と活用 - / Abstraction-as-a-Tool-for-Thinking
shin1x1
1
920
Featured
See All Featured
Visualization
eitanlees
146
16k
The Cult of Friendly URLs
andyhume
79
6.5k
Speed Design
sergeychernyshev
32
1.1k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
34
3.1k
The Pragmatic Product Professional
lauravandoore
36
6.8k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
46
7.5k
Adopting Sorbet at Scale
ufuk
77
9.5k
The Language of Interfaces
destraynor
158
25k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
283
13k
For a Future-Friendly Web
brad_frost
179
9.9k
Statistics for Hackers
jakevdp
799
220k
Product Roadmaps are Hard
iamctodd
PRO
54
11k
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]