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
170
How Python was Shaped by leaky Internals, Armin Ronacher, Flask framework
itpeople123
1
220
Building social network with Neo4j and Python, Андрей Солдатенко, Toptal
itpeople123
1
220
Осторожно, DSL! Иван Цыганов, Positive Technologies
itpeople123
0
110
Докеризация веб-приложения на Python Антон Егоров, Ostrovok.ru
itpeople123
0
190
Python Robot Operating System вместо Middleware framework Дмитрий Киселев, Endpoint.com
itpeople123
0
92
Falcon — очередная WSGI библиотека? Дмитрий Кукушкин, Wargaming
itpeople123
0
220
Очереди задач без купюр, Артем Малышев, Positive Technologies
itpeople123
1
100
Flame graph: новый взгляд на привычное профилирование, Кирилл Борисов, Яндекс
itpeople123
1
210
Other Decks in Programming
See All in Programming
CloudflareStack でRAGに入門
asahiiwm
0
130
20241217 競争力強化とビジネス価値創出への挑戦:モノタロウのシステムモダナイズ、開発組織の進化と今後の展望
monotaro
PRO
0
130
採用事例の少ないSvelteを選んだ理由と それを正解にするためにやっていること
oekazuma
2
1.1k
快速入門可觀測性
blueswen
0
450
103 Early Hints
sugi_0000
1
280
Stackless и stackful? Корутины и асинхронность в Go
lamodatech
0
1.1k
Effective Signals in Angular 19+: Rules and Helpers
manfredsteyer
PRO
0
190
Итераторы в Go 1.23: зачем они нужны, как использовать, и насколько они быстрые?
lamodatech
0
1.1k
range over funcの使い道と非同期N+1リゾルバーの夢 / about a range over func
mackee
0
160
Mermaid x AST x 生成AI = コードとドキュメントの完全同期への道
shibuyamizuho
1
310
Scalaから始めるOpenFeature入門 / Scalaわいわい勉強会 #4
arthur1
1
360
開発者とQAの越境で自動テストが増える開発プロセスを実現する
92thunder
1
210
Featured
See All Featured
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
507
140k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
10
820
The MySQL Ecosystem @ GitHub 2015
samlambert
250
12k
It's Worth the Effort
3n
183
28k
Imperfection Machines: The Place of Print at Facebook
scottboms
266
13k
The Cult of Friendly URLs
andyhume
78
6.1k
Docker and Python
trallard
43
3.2k
RailsConf 2023
tenderlove
29
950
Become a Pro
speakerdeck
PRO
26
5.1k
GraphQLとの向き合い方2022年版
quramy
44
13k
How to Think Like a Performance Engineer
csswizardry
22
1.2k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
1
130
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]