Как стать автором
Обновить

Зачем нужен asyncio в Python?

Время на прочтение 1 мин
Количество просмотров 1.5K
Блог компании KTS Python *Учебный процесс в IT

18-го октября в школе «Метакласс» от KTS начинается наш новый курс «Асинхронное программирование для начинающих».

В четверг, 30 сентября, в 19:00 пройдет второй открытый вебинар, где мы расскажем, зачем нужно асинхронное программирование:

— Что такое асинхронное программирование? 
— Зачем нужно АП? Какие типовые задачи решает?
— Зачем в синхронные фреймворки добавляют поддержку асинхронности?
— Почему Python, а не другие языки?
— Какие компании используют АП и для чего?

Вебинар проведут руководитель разработки и сооснователь KTS Александр Опрышко и разработчик Артем Бакулев. Всех, кто придет, в конце ждет традиционный сюрприз.

Чтобы записаться на вебинар, жмите сюда.

А можно чуть-чуть поподробнее?
Всего голосов 8: ↑8 и ↓0 +8
Комментарии 0

Пишем свой Google, или асинхронный краулер с rate limit’ами на Python

Время на прочтение 1 мин
Количество просмотров 2.4K
Блог компании KTS Python *Учебный процесс в IT

В четверг, 7 октября, в 19:00 наш руководитель разработки и сооснователь KTS Александр Опрышко проведет открытый вебинар:

«Пишем свой Google, или асинхронный краулер с rate limit’ами на Python»

Зачем это нужно? Такая задача часто встречается на практике, когда нужно реализовать периодическую синхронизацию/обкачку между сервисами. Еще это просто интересно, потому что позволяет опробовать многие возможности asyncio.

Вот некоторые вещи, которые вы узнаете на вебинаре:

— как запускать параллельные корутины
— как пользоваться примитивами синхронизации semaphore и event
— как обкачивать данные с сайтов, не подвергая их чрезмерной нагрузке

Вебинар прошел — чтобы посмотреть запись, переходите по ссылке.

Читать далее
Всего голосов 7: ↑5 и ↓2 +3
Комментарии 0

Запуск курса по asyncio

Время на прочтение 2 мин
Количество просмотров 2.6K
Блог компании KTS Python *Учебный процесс в IT

В понедельник, 18 октября, стартует новый курс школы Metaclass, посвященный asyncio. 

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

А в этот четверг, 14 октября, мы проведем вебинар про курс, на котором преподаватели ответят на вопросы по программе и разыграют бесплатное место на продвинутый трек курса.

Записаться на вебинар можно по ссылке, всех ждем!

Посмотреть, что будет на курсе
Всего голосов 12: ↑9 и ↓3 +6
Комментарии 0

Курс «Асинхронное программирование для начинающих»

Время на прочтение 1 мин
Количество просмотров 4.3K
Блог компании KTS Python *Учебный процесс в IT

В понедельник, 20 декабря, стартует второй поток курса «Асинхронное программирование на Python для начинающих» от школы Metaclass

Курс подойдет тем, кто уже работает с Python в вебе или анализе данных, но хочет разобраться в asyncio, подтянуть теорию и попробовать ее на практике.

Курс состоит из 7 модулей с видеоуроками, заданий с автопроверкой, онлайн-разборами ДЗ и менторской поддержкой.

Также для всех участников курса мы подготовили выделенные виртуалки для каждого ДЗ: писать код можно будет прямо в браузере на нашей платформе — вы можете посмотреть демо.

Сегодня, 8 декабря в 19:00, мы проведем вебинар про курс, на котором преподаватели ответят на вопросы по программе и разыграют бесплатное место на продвинутый трек курса.

→ Записаться на вебинар можно по ссылке, всех ждем!

Читать далее
Всего голосов 12: ↑9 и ↓3 +6
Комментарии 2

Курс по асинхронному программированию для начинающих, 3-й поток

Время на прочтение 1 мин
Количество просмотров 2.5K
Блог компании KTS Python *Учебный процесс в IT

Привет!

11 апреля, через месяц, начинается 3-й поток нашего флагманского курса — «Асинхронное программирование на Python».

Что ждет вас на курсе:

— познакомитесь с теорией асинхронности
— узнаете, чем она отличается от параллельного выполнения потоков и процессов
— научитесь использовать асинхронный веб-фреймворк в Python
— начнете работать с БД через асинхронные коннекторы
— напишите чат-бота
— и даже разберетесь, как написать собственный event loop

Читать далее
Всего голосов 7: ↑7 и ↓0 +7
Комментарии 0

Открытый livecode-вебинар по асинхронному программированию: «Сервер для геолокации»

Время на прочтение 1 мин
Количество просмотров 692
Блог компании KTS Python *Учебный процесс в IT

Привет!

В эту субботу, 2 апреля, в онлайн-режиме напишем websocket-сервер на asyncio, который получает геолокацию и транслирует ее всем подключенным клиентам. На вебинаре мы познакомимся с asyncio и научимся работать с протоколом websocket.

Ведущие — бэкенд-разработчик и преподаватель школы Metaclass Артём Бакулев и руководитель бэкенд-разработки KTS Александр Опрышко.

Этот вебинар — ознакомительное мероприятие перед началом 3-го потока курса «Асинхронное программирование на Python». 

Приходите, будем ждать!

👉 зарегистрироваться на вебинар

Читать далее
Всего голосов 5: ↑5 и ↓0 +5
Комментарии 0

Асинхронное программирование на Python для джуниор-разработчиков, 4-й поток

Время на прочтение 2 мин
Количество просмотров 1.7K
Блог компании KTS Python *Учебный процесс в IT

Привет!

3 октября начинается 3-й поток нашего флагманского курса — «Асинхронное программирование на Python».

АП используется для высоко­нагруженных проектов и микросервисов. Его спрашивают на собеседованиях в технологически развитых компаниях, и оно открывает дорогу к работе в интересных проектах.

В Python асинхронный подход реализуется через Asyncio, который мы рассматриваем в этом курсе. Каждый модуль — это полноценный проект, куда вы дописываете нужную функциональность. Дальше тесты автоматически проверяют взаимодействие всех компонентов проекта. Если ваше решение работает, вы успешно прошли модуль. 

Подключайтесь к ТГ-боту Слёрмику, и он поделится полезными материалами по теме. А ещё будет сообщать о наших бесплатных вебинарах. Там же вы в любой момент сможете купить курс.
Подключиться

Кстати о вебинарах: уже в этот четверг мы проведём первый из 2 вебинаров для погружения в тему, «Пишем Websocket-сервер для геолокации на asyncio»Зарегистрироваться

Что будет на курсе и кому подходит
Всего голосов 9: ↑8 и ↓1 +7
Комментарии 0

Асинхронное программирование на Python для джуниор-разработчиков

Время на прочтение 1 мин
Количество просмотров 1.8K
Блог компании Southbridge

Как джуну выделиться на фоне таких же новичков и получить оффер в технологически развитую компанию?

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

Разобраться в АП можно на курсе «Асинхронное программирование на Python для джуниор-разработчиков» от нашего партнёра KTS.

Читать далее
Всего голосов 15: ↑8 и ↓7 +1
Комментарии 0

Прокачаться в асинхронном программировании на Python за 6 недель

Время на прочтение 1 мин
Количество просмотров 1K
Блог компании Southbridge

Через два дня стартует курс по асинхронному программированию на Python от нашего партнёра KTS. Его можно пройти за полтора месяца, если заниматься 8–16 часов в неделю.

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

Читать далее
Всего голосов 11: ↑9 и ↓2 +7
Комментарии 0

Последовательный вызов асинхронных функций

Время на прочтение 3 мин
Количество просмотров 32K
JavaScript *
Как известно, язык JavaScript преследует парадигму событийно-ориентированного программирования. Это, безусловно, хорошо, но что делать, если за одной асинхронной функцией должна вызываться другая асинхронная функция, а затем еще одна, и еще… Иногда такой код очень запутывает, и не только человека привыкшего к синхронному и поочередному вызову функций. Это касается сложных анимаций, таймаутов, аякса, когда за одним должно следовать другое, и так дальше.

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

UPD
image
Ниже моё решение, являющееся аналогом этой функции модуля async и кучи других подобных решений, представленных в комментариях. Спасибо всем комментирующим и sedictor в частности.
/UPD

Рассмотрим пример (который взят из головы и в нем возможны ошибки) гипотетического парсера сайта, который после парсинга заносит данные в БД, и, после занесения, вызывает некоторый код.

var html = '';
request.on('response', function (response) {

    response.on('data', function (chunk) {
        html = html + chunk;
    });

    response.on('end', function() {
        //какой-то парсер
        parse(html, function(data){  
                //какая-нибудь функция, добавляющая данные в базу
		addToDatabase(data, function() {  
			doSomething();
		})
	});

    });
});


Много вложенных колбеков — не есть гуд, пробуем по-другому.
Читать дальше →
Всего голосов 50: ↑40 и ↓10 +30
Комментарии 33

Асинхронность: назад в будущее

Время на прочтение 22 мин
Количество просмотров 111K
C++ *

Асинхронность… Услышав это слово, у программистов начинают блестеть глаза, дыхание становится поверхностным, руки начинают трястись, голос — заикаться, мозг начинает рисовать многочисленные уровни абстракции… У менеджеров округляются глаза, звуки становятся нечленораздельными, руки сжимаются в кулаки, а голос переходит на обертона… Единственное, что их объединяет — это учащенный пульс. Только причины этого различны: программисты рвутся в бой, а менеджеры пытаются заглянуть в хрустальный шар и осознать риски, начинают судорожно придумывать причины увеличения сроков в разы… И уже потом, когда большая часть кода написана, программисты начинают осознавать и познавать всю горечь асинхронности, проводя бесконечные ночи в дебаггере, отчаянно пытаясь понять, что же все-таки происходит…

Именно такую картину рисует мое воспаленное воображение при слове “асинхронность”. Конечно, все это слишком эмоционально и не всегда правда. Ведь так?.. Возможны варианты. Некоторые скажут, что “при правильном подходе все будет работать хорошо”. Однако это можно сказать всегда и везде при всяком удобном и не удобном случае. Но лучше от этого не становится, баги не исправляются, а бессонница не проходит.

Так что же такое асинхронность? Почему она так привлекательна? А главное: что с ней не так?
Назад в будущее...
Всего голосов 130: ↑124 и ↓6 +118
Комментарии 42

О применении $.Deferred в работе с асинхронными задачами

Время на прочтение 15 мин
Количество просмотров 21K
JavaScript *jQuery *
Из песочницы
Привет всем!

В данной статье я хотел бы поделиться с вами соображениями о том, как на практике можно использовать механизм работы с асинхронными процессами, предоставляемый библиотекой jQuery с версии 1.5 под названием deferred, «отложенный» (jQuery.Deferred), а также со связанными объектами и методами.

Разумеется, уже написан не один десяток статей на тему работы с парой deferred/promise. Своей же я задался целью предоставить такой набор знаний, который дал бы новичку, во-первых, возможность забыть о своих страхах перед непонятным и сложным и, во-вторых, сделать еще один шаг к написанию понятного и хорошо структурированного кода, работающего с асинхронными процессами. Я бы хотел сосредоточить свое и ваше внимание на проблемах, которые легко разрешаются ипользованием deferred, на предпосылках и типовых схемах использования этого объекта.
Читать дальше →
Всего голосов 30: ↑28 и ↓2 +26
Комментарии 6

Нет никакого потока

Время на прочтение 4 мин
Количество просмотров 40K
Разработка веб-сайтов *Программирование *.NET *
Перевод
Важная правда об асинхронности в своей первозданной форме: нет никакого потока.

Тех, кто возразит, несть числа. «Нет», кричат они, «если я ожидаю операцию, должен быть поток, в котором выполняется ожидание! Возможно это поток из пула. Или поток операционной системы! Или что-то, связанное с драйвером устройства...»

Не внемлем этим крикам. Если операция по-настоящему асинхронная, то никакого потока нет.

Скептики не убеждены. Высмеем же их.
Читать дальше →
Всего голосов 47: ↑40 и ↓7 +33
Комментарии 24

Асинхронность 2: телепортация сквозь порталы

Время на прочтение 27 мин
Количество просмотров 48K
Блог компании Яндекс Программирование *C++ *


Не прошло и года, как я добрался до продолжения статьи про асинхронность. Эта статья развивает идеи той, самой первой статьи про асинхронность [1]. В ней обсуждается достаточно сложная задача, на примере которой будет раскрыта мощь и гибкость использования сопрограмм в различных нетривиальных сценариях. В заключение будут рассмотрены две задачи на состояние гонки (race-condition), а также небольшой, но очень приятный бонус.
Читать дальше →
Всего голосов 63: ↑60 и ↓3 +57
Комментарии 28

Инфраструктура команд для вызова пользователем действий в шаблоне MVVM

Время на прочтение 10 мин
Количество просмотров 10K
Программирование *.NET *C# *
Представим типичный пользовательский интерфейс. Есть несколько элементов управления, которые запускают некоторые повторяемые (за время жизни приложения) действия разной сложности. Чтобы сложные действия, такие как обращение к различным носителям, обращение к сети или сложное вычисление, не снижали отзывчивость интерфейса, они должны быть асинхронными. Дополнительно могут быть элементы управления, отменяющие асинхронно запущенное действие. Действие имеет свойство состояния (неактивно, запущено, завершено успешно, завершено с ошибкой, отменено), которое тем или иным образом отображается пользователю. Принятый в WPF, Silverlight и WinPhone шаблон проектирования MVVM диктует, чтобы такое «действие» было частью модели представления, давая возможность вызывать сервисы модели из пользовательского интерфейса без создания между ними жёсткой связи. К сожалению, такое «действие» в базовой библиотеке классов не реализовано. Ближайшие имеющиеся в библиотеке сущности, такие как задачи System.Threading.Tasks.Task, команды System.Windows.Input.ICommand и делегаты System.Delegate, не подходят: задачи всегда одноразовые и не могут представлять повторяемое действие, делегаты и команды не поддерживают отмену и не содержат свойств состояния, а команды вообще не могут быть асинхронными. Далее я предлагаю решение в виде небольшой библиотеки классов, дающей возможность легко использовать описанные «действия» в ваших приложениях.
Читать дальше →
Всего голосов 18: ↑15 и ↓3 +12
Комментарии 11

Параллельная загрузка данных с временными ограничениями

Время на прочтение 4 мин
Количество просмотров 4.2K
Программирование *.NET *Алгоритмы *C# *
Туториал
Бывают ситуации, когда необходимо получить данные из нескольких удалённых источников, но так, чтобы время ожидание было не слишком большим. Например, при загрузке данных о погоде или курсе валюты, мы можем опросить несколько сервисов и отобразить результаты всех ответивших за заданный промежуток времени.



Если за этот промежуток времени ответило недостаточное количество сервисов, мы можем дать дополнительное время, чтобы дождаться загрузки.

Итого, мы оперируем тремя базовыми параметрами:
  • Приемлемым временем ожидания
  • Минимально необходимым количеством источников
  • Дополнительным временем ожидания

Читать дальше →
Всего голосов 15: ↑7 и ↓8 -1
Комментарии 0

Как мы строим систему обработки сообщений

Время на прочтение 6 мин
Количество просмотров 14K
Разработка веб-сайтов *Анализ и проектирование систем *Проектирование и рефакторинг *
Из песочницы
Наша команда разрабатывает бекэнд-систему для обработки сообщений от мобильных устройств. Устройства собирают информацию о работе сложной техники и посылают сообщения в центр обработки. В этой статье я хочу поделиться подходами к построению подобных систем. Идеи достаточно общие, их можно применять для любой системы со следующей архитектурой:



По каналам связи устройства присылают сообщения на наш шлюз (gateway) – входную точку приложения. Задача приложения – разобраться, что именно пришло, произвести необходимые действия и сохранить информацию в базе данных для дальнейшего анализа. Базу мы будем рассматривать как конечную точку обработки. Звучит просто, но с ростом количества и разнообразия сообщений появляется несколько нюансов, которые я и хочу обсудить.
Читать дальше →
Всего голосов 22: ↑17 и ↓5 +12
Комментарии 16

Вышла asyncpg — клиентская библиотека PostgreSQL для Python/asyncio

Время на прочтение 1 мин
Количество просмотров 11K
Python *PostgreSQL *
На конференции EuroPython 2016 Юрий Селиванов (автор async/await-синтаксиса и автор uvloop) представил новую высокопроизводительную библиотеку для асинхронного доступа к PostgreSQL — asyncpg. Тесты демонстрируют в среднем в два раза большую скорость, чем у psycopg2 (и её асинхронного варианта — aiopg).


Причина высоких показателей в том, что asyncpg реализует бинарный протокол PostgreSQL нативно, без использования абстракций, вроде DB-API. Кроме того, это позволило получить простую в использовании реализацию:


Читать дальше →
Рейтинг 0
Комментарии 2

ГИС ЖКХ: асинхронная модель взаимодействия

Время на прочтение 10 мин
Количество просмотров 14K
.NET *C# *Разработка под Windows *
Продолжаю делиться опытом по взаимодействию с ГИС ЖКХ. Следующей задачей, после установки защищенного соединения, стала организация обмена сообщениями. Разработчики ГИС ЖКХ предлагают две модели взаимодействия: синхронную и асинхронную. Некоторые разработчики выбирают синхронную модель из-за её простоты и доступности. В этой статье постараюсь объяснить, почему нужно использовать именно асинхронную модель и дать подсказки по реализации на C#.
Читать дальше →
Всего голосов 19: ↑19 и ↓0 +19
Комментарии 0

О метастабильности в электронике

Время на прочтение 8 мин
Количество просмотров 14K
FPGA *Разработка робототехники *
Многие начинающие разработчики часто недооценивают влияние асинхронности на работу цифровых схем. В проектах с одним тактовым генератором сложностей не возникает: схема полностью синхронна, и от разработчика требуется только соблюдать требования Setup и Hold. Но как только в системе появляется второй тактовый генератор, возникает проблема CDC – Clock Domains Crossing, связанная с асинхронностью работы участков схемы, работающих от независимых (асинхронных) генераторов. На практике эта проблема выливается в усложнение маршрута проектирования, связанное с особенностями статического временного анализа в САПР, а в железе проявляется в виде такого эффекта как метастабильность, и аномальное поведение триггеров. Собственно, о метастабильности здесь уже писали, но я предлагаю чуть глубже разобраться в проблеме.
Читать дальше →
Всего голосов 43: ↑43 и ↓0 +43
Комментарии 22