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 (станция метро «Преображенская площадь), карта по ссылке.
  • Стоимость: 17 000 рублей, студентам — 10 000 рублей.

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

Комментарии (11)


  1. Relrin
    22.11.2016 12:51
    +4

    Планируется ли какая-нибудь он-лайн трансляция (даже если она будет платная)? Было бы здорово поучаствовать в подобном мероприятии при невозможности реального посещения.


  1. splatt
    23.11.2016 10:09
    +2

    17 000 за курс об async в Python — это мощно. Интересно, чего там такого на 17к расскажут.

    Я знаком с aiohttp не понаслышке.
    Пытались пользоваться им, после постройки прототипа переписали все на привычном flask (поэтому картинка к посту доставила).
    К сожалению, мир asyncio все ещё в зародыше. Пока не появится адекватных библиотек и ORM систем уровня алхимии, создавать что-то сложнее todo-листа на стэке aiohttp является крайне трудным.
    А с учётом общей сложности написания кода с async/await, отсутствие адекватной работы с @property, я думаю что пройдут годы перед тем, как это наступит. Если наступит вообще. Люди выбирают Python из-за простоты, чем предлагаемый стэк разработки похвастаться не может.


    1. vazir
      23.11.2016 12:18

      На заметку: кто-то считает как вы, а кто-то просто его использует. Там все просто. И достаточно эффективно.


      1. splatt
        23.11.2016 18:23

        Можно поинтересоваться, какого рода приложение вы написали (и релизнули) с использованием aiohttp? Какой базой данных пользовались? Требовалась ли асинхронная работа с чем-то еще, помимо базы данных (например, внешние http вызовы)?


    1. lega
      23.11.2016 12:36

      создавать что-то сложнее todo-листа на стэке aiohttp является крайне трудным

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

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


      1. splatt
        23.11.2016 18:21
        +1

        Проблема не в стеке, асинхронный код везде вносит повышенную сложность.


        Я бы так не сказал. Например, в Unity3D, асинхронный код здорово упрощает жизнь, потому что альтернатива там — это многопоточность, которая в разы сложнее.


        1. lega
          23.11.2016 22:45

          С Unity3D не знаком, можете привести код для сравнения? Вообще, помимо многопоточности существуют корутины/горутины/файберы — шаг в правильном направлении, но мало кто движется в эу сторону.


          1. splatt
            23.11.2016 23:10
            +1

            Код, в целом, как в питоне до введения ключевых слов async/await.
            Т.е. корутины, основанные на итераторах:
            yield return StartCoroutine(MyCoroutine(var1, var2));

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

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

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

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

            Если вам где-то в коде нужно совершить запрос в БД, то вам прийдется «протянуть» весь колл стэк от роутинга до запроса в БД через корутины. Соответственно, вы не можете пользоваться конструкторами (не будете же вы __init__ делать корутиной?), вы не можете пользоваться свойствами, итд.


  1. offline15
    23.11.2016 12:34

    А сколько часов в день будет проходить этот курс?


  1. el777
    23.11.2016 12:56
    +1

    Ссылки внизу полезные.
    Еще в качестве вводного материала могу порекомендовать свежее выступление хабраюзера xen, который разрабатывал и на Django, и на Flask, и в текущем проекте AskPapir.com использует aiohttp и делится своим практическим опытом.
    Вначале очень понятное описание, что это и зачем нужно. Дальше проблемы асинхронной разработки, чего не хватает для счастья разработчика на текущий момент.


  1. khaletskiy
    23.11.2016 15:49
    +2

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