Учимся работать с asyncio+aiohttp: в Москве пройдет курс от Core-разработчика Python



    17 и 18 декабря в Москве пройдет двухдневный курс под названием «Обучение работе с asyncio+aiohttp». Его автор — core-разработчик Python, украинский программист Андрей Светлов (подробнее о нем можно почитать здесь). Андрей — один из ведущих мировых экспертов по Python и создатель авторского курса. Он никогда раньше не читал его в Москве, так что наше мероприятие — отличный шанс для всех, кто интересуется Python и асинхронной разработкой, получить новые знания и ответы на свои вопросы напрямую от создателя популярных инструментов.

    Мы поговорили с Андреем о том, какие вопросы будут рассмотрены на курсе, кому он может быть полезен, и какие еще ресурсы Python-разработчикам следует изучить, чтобы повысить свой уровень.

    Почему раньше не удавалось прочитать курс в Москве?


    Организация такого мероприятия — не самое простое дело. Нужно выбрать и забронировать место проведения, обеспечить слушателям возможность перекусить (все же занятия идут несколько часов и не один день), разобраться с приемом оплаты и бухгалтерией. В общем, для меня одного сложностей было слишком много, поэтому я благодарен коллегам из Positive Technologies, которые все организационные вопросы взяли на себя. Теперь смогу приехать и прочитать курс.



    О чем этот курс и для кого он?


    Язык Python активно развивается, все более популярным становится так называемое асинхронное программирование. Его поддержка в Python обеспечивается библиотекой asyncio. Помимо работы над ядром самого Python, я — один из разработчиков этой технологии и различных «навесов» на нее (вроде веб-сервера).

    Наш курс будет посвящен с одной стороны разработке веб-сайтов с использованием этой технологии, кроме того мы глубже разберемся с тем, как работает сама acyncio и как ее «правильно готовить». На примерах рассмотрим ошибки, которые делают новички и более опытные специалисты. Сейчас информации по теме не так уж и много, так что этот курс — хорошая возможность найти ответы на свои вопросы.

    Что касается целевой аудитории, то прежде всего я бы советовал посетить занятия именно узким специалистам, которые занимаются программированием на Python и интересуются новыми технологиями в этой сфере или хотят углубить свои знания. Конечно, что-то полезное для себя почерпнут и, скажем, руководители отделов разработки, но если вы из их числа и хотите понять, надо ли внедрять asyncio у себя — два дня технически насыщенного контента все же будет многовато.

    Что нужно знать, чтобы курс был максимально полезным?


    До начала курса знать и уметь работать с asyncio не обязательно, хотя знакомство с альтернативными подходами типа Twisted и Tornado будет кстати. Нужно уметь программировать на Python и иметь представление о том, как создаются веб-сайты вне зависимости от фреймворка — подойдет опыт и с Django, и с Flask.



    Как выглядит структура курса?


    Это будут не привычные лекции. Конечно, по большей части все будет проходить в формате моего монолога и демонстрации примеров, однако формат подразумевает возможность в любой момент остановить меня уточняющим вопросом. Мы не планируем набирать на курс много людей — так что ответить я смогу каждому слушателю. А так, ничего необычного — проектор, флипчарт с маркерами, ничего особенного нам не понадобится.

    Поделитесь какими-то полезными материалами для подготовки к курсу и дальнейшего изучения?


    Вообще, это реальная проблема — по теме асинхронного программирования и Python не так уж и много источников знаний. Книг практически нет, по большей части все самое интересное представлено в различных статьях из блогов (часто на английском, хотя неплохие материалы есть и на Хабре). Также стоит изучить официальные репозитории проектов и тематические ресурсы:


    От себя можем посоветовать также подписаться на блог самого Андрея и его Twitter.

    Как попасть на курс


    • Место проведения мероприятия: офис Positive Technologies, Москва, Преображенская площадь дом 8 (станция метро «Преображенская площадь), карта по ссылке.
    • Стоимость: 12 000 рублей, студентам — 10 000 рублей.
    • E-mail для оперативной связи: asyncio2016@ptsecurity.com

    Курс пройдет 17 и 18 декабря. Для регистрации заполните, пожалуйста, форму. После регистрации вы получите письмо с детальной информацией об оплате.
    Positive Technologies
    275.89
    Компания
    Share post

    Comments 12

      +4
      Планируется ли какая-нибудь он-лайн трансляция (даже если она будет платная)? Было бы здорово поучаствовать в подобном мероприятии при невозможности реального посещения.
        +2
        17 000 за курс об async в Python — это мощно. Интересно, чего там такого на 17к расскажут.

        Я знаком с aiohttp не понаслышке.
        Пытались пользоваться им, после постройки прототипа переписали все на привычном flask (поэтому картинка к посту доставила).
        К сожалению, мир asyncio все ещё в зародыше. Пока не появится адекватных библиотек и ORM систем уровня алхимии, создавать что-то сложнее todo-листа на стэке aiohttp является крайне трудным.
        А с учётом общей сложности написания кода с async/await, отсутствие адекватной работы с @property, я думаю что пройдут годы перед тем, как это наступит. Если наступит вообще. Люди выбирают Python из-за простоты, чем предлагаемый стэк разработки похвастаться не может.
          0
          На заметку: кто-то считает как вы, а кто-то просто его использует. Там все просто. И достаточно эффективно.
            0
            Можно поинтересоваться, какого рода приложение вы написали (и релизнули) с использованием aiohttp? Какой базой данных пользовались? Требовалась ли асинхронная работа с чем-то еще, помимо базы данных (например, внешние http вызовы)?
              0
              Много. Десятки. Платежные шлюзы, контроллеры голосового свитча (FreeSWITCH), биллинг, разичные API, backend-ы b frontend-ы… Все в коммерческой эксплуатации и не opensource.
              Использую PostgreSQL, и да асинхронная работа нужна была с множеством внешних сущностей.
            0
            создавать что-то сложнее todo-листа на стэке aiohttp является крайне трудным

            Асинхронный* код не для всего подряд, и делать обычные сайты (большинство веб проектов) на нем не выгодно, к тому же результат может работать медленнее чем синхронный вариант.

            Люди выбирают Python из-за простоты, чем предлагаемый стэк разработки похвастаться не может.
            Проблема не в стеке, асинхронный код везде вносит повышенную сложность.
              +1
              Проблема не в стеке, асинхронный код везде вносит повышенную сложность.


              Я бы так не сказал. Например, в Unity3D, асинхронный код здорово упрощает жизнь, потому что альтернатива там — это многопоточность, которая в разы сложнее.
                0
                С Unity3D не знаком, можете привести код для сравнения? Вообще, помимо многопоточности существуют корутины/горутины/файберы — шаг в правильном направлении, но мало кто движется в эу сторону.
                  +1
                  Код, в целом, как в питоне до введения ключевых слов async/await.
                  Т.е. корутины, основанные на итераторах:
                  yield return StartCoroutine(MyCoroutine(var1, var2));

                  Вопрос не в форме написания кода, а в том, что в геймдеве это имеет гораздо больше смысла. Когда вся логика построена на обновлении состояния объектов каждый кадр, строить код на корутинах значительно проще, чем на чем-либо еще.

                  Но как только в игре нужно сделать обращения во внешний сервис, сделать http запрос в REST api, или в целом поработать с какими-то внешними асинхронными задачами, или, что еще хуже, построить цепочку из таких действий, которые зависят друг от друга, то начинается адовый ад. Частично это связано с тем, что корутины в Unity не поддерживают возвращение значения, приходится комбинировать коллбэки и корутины, и код превращается в callback hell. Исключения не выкинуть, половину языка не использовать, про адекватный ООП и паттерны можно забыть, итд.

                  Тоже самое с веб-девом. Возможно, если вы пишите простейшее, «плоское» приложение, где у вас весь проект — это набор методов-обработчиков роутингов, которые берут параметры запроса, совершают некие асинхронные действия с MongoDB, и отдают ответ, то да, наверное, aiohttp можно использовать.

                  А если вам нужно построить по-настоящему сложную и расширяемую систему (например, форумный движок), где необходимо по максимуму использовать ООП, где без ORM системы не выжить, потому что модели нужно наследовать друг от друга и они могут иметь связанную логику, где нужно кэшировать результаты запросов в БД через property, где нужно по-максимуму использовать те же паттерны — выбор aiohttp стэка для вас будет огромной ошибкой.

                  Если вам где-то в коде нужно совершить запрос в БД, то вам прийдется «протянуть» весь колл стэк от роутинга до запроса в БД через корутины. Соответственно, вы не можете пользоваться конструкторами (не будете же вы __init__ делать корутиной?), вы не можете пользоваться свойствами, итд.
            0
            А сколько часов в день будет проходить этот курс?
              +1
              Ссылки внизу полезные.
              Еще в качестве вводного материала могу порекомендовать свежее выступление хабраюзера xen, который разрабатывал и на Django, и на Flask, и в текущем проекте AskPapir.com использует aiohttp и делится своим практическим опытом.
              Вначале очень понятное описание, что это и зачем нужно. Дальше проблемы асинхронной разработки, чего не хватает для счастья разработчика на текущий момент.


                +2
                С удовольствием оплатил бы онлайн трансляцию, если таковая возможна.

                Only users with full accounts can post comments. Log in, please.