Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Python 3.5, aiohttp — опыт эксплуатации, проблемы, решения

Python 3.5, aiohttp — опыт эксплуатации, проблемы, решения

Павел Петлинский (Rambler&Co)

Как мы запустили продакшн сервис на последней версии вселенной и что получили

9 февраля 2016, Moscow Python №32

Moscow Python Meetup

February 15, 2016
Tweet

More Decks by Moscow Python Meetup

Other Decks in Technology

Transcript

  1. 40 50+ 80+ 1500 млн человек суммарная аудитория группы количество

    изданий,
 сервисов и проектов разработчиков человек в хорошей компании 2
  2. 3

  3. Контакты В группе компаний Rambler&Co всегда есть открытые вакансии для

    тех, кто хочет профессионально расти и развиваться, занимаясь тем, что по-настоящему нравится [email protected] www.rambler-co.ru/jobs 5
  4. Что нам необходимо • aiohttp • aiopg • pewee-async •

    circus • aioamqp • fabric • riak python client (Async version not exist :( )
  5. Хотим создать демона • Python до 3.0 - supervisor (стабильно,

    провернно временем) • Python 3.3 - 3.4 - circus • Python 3.5 - изменилась логика внутри модуля configparser и circus перестал работать
  6. Хотим собирать демона • Fabric не работает под Python 3

    • fork - https://github.com/akaariai/fabric/tree/py34 • И он работает под 3.5 :)
  7. Python 3.5 меньше кода • with async vs. try •

    было 1 try: 2 yield from aiohttp.request('GET', url) 3 except Exception as e: 4 return None • стало 1 async with session.get(url) as response: 2 return await response.text()
  8. А это быстро? • Результаты тестов на реальной инфраструктуре (DB

    по сети, приложение запущено под gunicorn) • Flask + DB Connection pool - 377 rps • Tornado (asyncio loop) + pewee async - 803 rps • aiohttp + pewee async - 1132 rps
  9. aiohttp • нет подсистемы кэширования (нет Low Level и High

    Level API) • нет ауторелоада из коробки • aiohttp_autoreload -> https://pypi.python.org/pypi/aiohttp_autoreload/0.0.1
  10. Riak (и все остальные БД) • если нужна не стандратная

    БД • https://github.com/rambler-digital-solutions/aioriak • как вариант - run_in_executor
  11. В чем писать? • PyCharm 5 • поддерживает type hinting

    • поддерживает async def etc. синтаксис • но постоянно ломается :(
  12. Выводы • разрабатывать приложения можно • они будут быстрые •

    надо быть готовым к сложностям • надо быть готовыми писать свои библиотеки поддерживающие asyncio