django, redis, rq и стыдливая параллельность Мастер-классы
Machine Learning Engineer в команде персонализации в отделе R&D.
Пишет на Python'е больше 10 лет. Несколько лет отвлекался на науку, сделал пару диссертаций, но потом код победил.
Успел позаниматься половиной IT от системного администрирования, был девопс-инженером, когда такого слова ещё не было, был фуллстеком до того, как это стало трендом. Стаж руководства на разных уровнях от маленького тимлида до маленького СТО в районе 5 лет. Дата-инженер.
Традиционно разработку на питоне принято хаять за GIL, плохую многопоточность и неудобную асинхронность. Как можно без боли добавить себе в проект очереди задач, выполнение в несколько потоков и что вообще есть для параллельного/"многопоточного" выполнения, если вас мутит от 'async def' и вам лень разбираться, в чём отличия между ProcessPoolExecutor и ThreadPoolExecutor.
Я рассмотрю пример обработки долгих пользовательских запросов (или, скорее, долгих серверных ответов) на примере библиотеки rq и сервиса отправки писем. Разберём необходимую "матчасть" и немного посмотрим в тему "а как там это всё делать в стандартной библиотеке без этих внешних пакетов".