В последнюю пятницу октября в Минске традиционно прошел Python Meetup, на котором вприкуску с бургерами были зачитаны три доклада от спецов из компаний Viber, Melesta и Wargaming.net. На этот раз прошлись по недостаткам Python, разобрались на примере, с какими проблемами можно столкнуться при портировании на Python, а также рассмотрели все этапы разработки серверов на Python для социальных игр. Все видео, а также ссылки на презентации можно найти чуть ниже.
1. Портируем на Python 3, Никита Гришко, Wargaming.net | COOO «Гейм Стрим»
Почему стоит все чаще задумываться о поддержке Python 3, и с какими проблемами можно столкнуться при портировании. Рассмотрим на примерах из Sentry как добавить поддержку Python 3 с использованием 2to3, tox и six.
2. Социальный игровой сервер на Python: от первого коммита до продакшена, Алексей Романов, Melesta
Важными потребностями современного человека являются: общение с другими людьми и игры. На стыке двух этих потребностей и возникли различные игровые приложения в социальных сетях. Обычно такие приложения требуют наличия серверной стороны, способной справляться с высокими нагрузками. В данном докладе Алексей делится опытом разработки серверов на Python для социальных игр, начиная от этапа разработки дизайнерского документа и заканчивая выпуском игры в продакшн и её дальнейшей поддержкой.
3. Недостатки Python, Кирилл Лашкевич notorca, Viber
В докладе раскрыты слабые места Python, проблемы с GC, функциональным стилем, реализацией стандартных структур данных и интерпретатора CPython.
PS: 29 ноября состоится очередной митап на около-python-овские темы. Будут зачитаны 4 доклада:
1.Введение в GIL и новый GIL Андрей Нехайчик, Wargaming.net | COOO «Гейм Стрим»
— Треды, отличия от потоков.
— Как использовать треды.
— Тестирование производительности (и облом).
— Представление GIL, как он работает.
— Освобождение по I/O, 100 тиков.
— Зачем нужен GIL.
— Проблемы переключения потоков (медленный захват).
— Проблема 100 тиков.
— Проблема отсутствия приоритетов и их типов.
— Новый GIL, 5 миллисекунд, drop_request.
— Когда drop_request не работает.
— Соревнование CPU и I/O тредов.
— Как борются с GIL: тезисы о numpy, Jython, multiprocessing.
2. Использование gevent для эмуляции высокой нагрузки , Александр Колесень, SiliconMint
Обязательное действие перед выпуском более-менее серьёзного проекта — тестирование производительности. На высоконагруженных проектах нужно точно знать, какую нагрузку они могут выдержать, причём заранее. Следовательно, нужен способ эмуляции высокой конкурентности, желательно чтобы в теории он позволял полностью загрузить канал траффиком. К тому же, неплохо было бы, чтобы для этого не нужно было использовать несколько десятков серверов. В докладе будет рассказано об опыте использования gevent для подобной задачи, что позволило бы обойтись одним t1.micro инстансом, с которого выполняется тестирование.
3. Асинхронное распределенное выполнение задач. Stdlib, Celery, RQ и собственные велосипеды., Роман Иманкулов, doist.io
Когда необходимо заставить веб-приложение выполнить тяжелую работу без ухудшения user experience, или нужно по-быстрому собрать кластер на коленке, возникает потребность в распределенном выполнении очередей команд. В докладе будут рассмотрены варианты организации таких очередей подручными средствами, будет выяснено, чем так хорош Celery, есть ли у него достойные альтернативы, и как написать рабочий менеджер очередей в тридцать строчек кода.
4. Опциональная типизация в Python, Андрей Власовских, JetBrains
С появлением новых библиотек и диалектов для типизации Python вновь оживилась
дискуссия о необходимости и способах введения опциональных типов в Python. В докладе будет рассказано о текущем состоянии этой области, в том числе и об инициативах JetBrains.
Как всегда, на митапе вас ждет неформальная обстановка, интересные вопросы по темам докладчиков и вкусные бургеры. Все подробности можно найти на нашей страничке в FB. Всем быть, всем до встречи!
Автор: Wargaming