Тёмный

FastAPI - Фоновые задачи с Celery, Redis и Flower #9 

Артём Шумейко
Подписаться 28 тыс.
Просмотров 32 тыс.
50% 1

💡 Попробуй онлайн-тренажёр для подготовки к техническому собеседованию: clck.ru/3B5gxT 💡
Предзапись на курс по поиску работы разработчику и техническим навыкам для Middle (FastAPI): forms.gle/Zw7bPnQvTsfekVH47
Забирай роадмап изучения самого востребованного фреймворка на Python - FastAPI здесь: t.me/ArtemShumeikoBot
Скачать redis можно здесь: github.com/tporadowski/redis/...
Репозиторий на Github с кодом из видео: t.me/artemshumeiko/9
Мой телеграм-канал: t.me/artemshumeiko
Поддержать канал на Boosty: boosty.to/artemshumeiko
В этом видео мы познакомимся с классным инструментом Celery, научимся выполнять фоновые задачи. Работа с Celery - мастхэв для любого бэкендера. Мы также научимся мониторить выполнение задач через Flower. Установку Redis смотрите в предыдущем уроке.
0:00 - Вступление
0:58 - Зачем нужны фоновые задачи
2:39 - Добавляем SMTP приложение к google аккаунту
3:26 - Установка библиотек Celery и Flower
4:04 - Подключение к Celery через Python
5:01 - Про установку redis
5:45 - Создание задачи Celery
8:41 - Запуск Celery и Flower
11:30 - Обзор Flower
12:15 - Реализация фоновых задач в FastAPI
15:24 - Почему нужно перезапускать Celery при изменении кода
16:25 - Запуск задачи с помощью Celery
19:03 - Сравнение Celery и BackgroundTasks
20:21 - Время поставить лайк и подписаться
#fastapi #python #backend #django #flask #docker #sql #celery #разработка #программирование

Опубликовано:

 

19 июн 2024

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 81   
@artemshumeiko
@artemshumeiko Год назад
💡 Попробуй онлайн-тренажёр для подготовки к техническому собеседованию: clck.ru/3B5gwP 💡 Забирай роадмап изучения самого востребованного фреймворка на Python - FastAPI здесь: t.me/ArtemShumeikoBot
@soldiertoy
@soldiertoy Год назад
Чисто для интереса спрашиваю, у вас есть коммерческий опыт на FastAPI?
@user-hn8sf7tb3w
@user-hn8sf7tb3w Год назад
Как раз начал изучение данного фреймворка, видео будут выходить стабильно по графику или по настроению?) Можно затронуть ponyORM, если работали с ней конечно)
@artemshumeiko
@artemshumeiko Год назад
Я стараюсь выкладывать видео раз в неделю. Последние 2 месяца почти всегда получалось. Надеюсь, и дальше смогу) По другим ОРМ видео не планируется
@algorithm13
@algorithm13 Год назад
Спасибо за курс! Еще интересно разбиение проекта на микросервисы, вынос функций JWT в отдельный сервис, логирование, работа с документоориентированной бд, напримр MongoDB. Также в перспективе все это развернуть в кубернетис с балансировками нагрузки, разварачивании на кластере и прочим )
@user-hn8sf7tb3w
@user-hn8sf7tb3w Год назад
@@artemshumeiko Привет. Еще возник вопрос, какими ресурсами кроме документации пользовался при изучении fastapi? Курс идет так просто и понятно, что чувствуется нехватка видео, а они выходят раз в неделю(
@awesomeex5821
@awesomeex5821 Месяц назад
Отличный урок! Спасибо большое за твои труды)
@user-yk4qq4nt7o
@user-yk4qq4nt7o 10 месяцев назад
Спасибо за интересный и познавательный урок!
@eugeneyakimenko8843
@eugeneyakimenko8843 Год назад
Спасибо большое, как всегда все очень понятно и годно!
@user-kx4mm7zm4w
@user-kx4mm7zm4w 7 месяцев назад
Спасибо большое, очень классное видео, было бы круто увидеть все это в docker-compose
@user-nl2mc5le7o
@user-nl2mc5le7o Год назад
как всегда очень круто)) В своем приложении буду использовать обязательно, как дойдет до этой части))
@vladvlad3544
@vladvlad3544 11 месяцев назад
Про --pool=solo годно прям, почему-то до этого вообще не слышал про это, вместо этого запускал при помощи доп. библотеки eventlet или gevent
@RajPolinovsky
@RajPolinovsky 8 месяцев назад
Спасибо за видео!!!! Было бы неплохо сделать урок с beat. К нему больше вопросов.
@-Pechorin-
@-Pechorin- 9 месяцев назад
Артём, спасибо вам большое за классный, интересный, а главное, очень познавательный урок. Я как раз на неделе не прошёл тестовое по теме😅. Теперь буду знать)
@artemshumeiko
@artemshumeiko 9 месяцев назад
Рад, что помог вам
@ramilelephant7826
@ramilelephant7826 Год назад
Крутой контент и полезный !! Жду следующих видосов !!
@artemshumeiko
@artemshumeiko Год назад
Спасибо! На днях новое видео :)
@patricross8683
@patricross8683 4 месяца назад
Спасибо за видео
@soldiertoy
@soldiertoy Год назад
Спасибо вам!
@defend00r
@defend00r Год назад
Не останавливайся, ты супер!
@artemshumeiko
@artemshumeiko Год назад
Спасибо ;)
@user-ek6iw4cs2r
@user-ek6iw4cs2r 3 месяца назад
Спасибо большое, что упомянул написать --pool=solo, а то второй день не понимал что не так
@_garik__
@_garik__ Год назад
Очень четкая, грамотная, структурированная информация. Спасибо!
@NickTyupin
@NickTyupin Год назад
суперский контент!) сколько еще примерно планируешь выпустить роликов и на какие темы?
@artemshumeiko
@artemshumeiko Год назад
Привет! Еще планирую 7-8 видео. Темы: вебсокеты, работа с файлами, middleware, соединение с фронтом (CORS), тестирование кода, создание контейнера, деплой и мб что-нибудь еще
@AnatoliyDekorstyle
@AnatoliyDekorstyle 9 месяцев назад
Спасибо за нужный контент и крутую подачу!)) Есть вопрос в данном уроке в папке tasks все функции get_dashboard_report, send_email_report_dashboard и get_email_template_dashboard по синтаксису не асинхронные. Почему нет? Какие вообще принципы выбора в фастапи - какие таски прописываем асинхронными а какие нет смысла? Хотелось бы вот про это пару слов
@haskelllisp5998
@haskelllisp5998 Год назад
ваще красавчик
@griigorievamaria
@griigorievamaria Год назад
17:38 немножко пошалим😂😂😂 суперский урок, спасибо!
@artemshumeiko
@artemshumeiko Год назад
@eggiopain5758
@eggiopain5758 Год назад
Cool content
@rajpolinovsky8350
@rajpolinovsky8350 Год назад
Спасибо! Видео действительно шикарное. Скажите, можно ли использовать Celery для задачи которая не закрывается пока не выполнено определенное условие. Скажем задача по проверки оплаты. Проверка проходит до тех пор пока приход оплаты не проведен?
@Alsurnov
@Alsurnov Год назад
Отличное видео. Спасибо за твою работу. Просьба: можешь записать урок как запоковать FastAPI c Celery + ngnix в docker, при этом чтобы реляционная база данных была вне докера? Было бы интересно посмотреть как это правильно разворачивать.
@Eugene_Ivanov
@Eugene_Ivanov 10 месяцев назад
Посмотри в сторону Traefik
@gayratsaidakhmedov5451
@gayratsaidakhmedov5451 2 месяца назад
спасибо
@eggiopain5758
@eggiopain5758 Год назад
good content
@Miron_MipoX
@Miron_MipoX 3 месяца назад
Супер что о таких фишках говорят, но рассказано за 20 минут одна страницы документации. Я так понимаю это вводный курс, даже не базовый и наверное автор раскрывает по этапам в более широком разъяснении данные технологии.
@yevhenKaskov
@yevhenKaskov 10 месяцев назад
как же я долго промудохался с этим всем на винде, с зависшими задачами в состоянии RECEIVED и никогда не выполняющимися, и celery процесс в системе невозможно до конца остановить и куча прочих наслаивающихся траблов. Пока не наткнулся на это видео и не добавил к запуску воркера --pool=solo. Спасибо Артему. Никакая гребанная документация об этом не говорит.
@evalinor
@evalinor 6 месяцев назад
А поставить WSL2 религия не позволяет? =)
@romanr1286
@romanr1286 6 месяцев назад
Спасибо за видело. Интересно было бы посмотреть как селери на прод ставить, а именно процесс демонизации.
@artemshumeiko
@artemshumeiko 6 месяцев назад
Что такое процесс демонизации?)
@romanr1286
@romanr1286 6 месяцев назад
@@artemshumeiko например, как правильно запустить селери в systemd, чтобы он работал в фоне
@valor5164
@valor5164 25 дней назад
@@artemshumeiko это процесс создания "демона" (daemon) на линукс серваке, чтобы он запускался со всей системой. Любую программу можно завернуть определенными командами и конфигами в этого демона, чтобы он перезапускался со всей системой, если вдруг сервер перезапустился из-за перебоев электричества например или ддос атак. Ещё это делают для того, чтобы запускать его через оч простую команду (типа systemctl start daemon_name), которая бы запускала bash скрипт, то есть пулл готовых команд за тебя
@drillmaker5455
@drillmaker5455 Месяц назад
лайк
@nateriver8261
@nateriver8261 6 месяцев назад
А как можно внутри селери задачи вызвать асинхронный код? Например, если мы работает с асинхронной алхимией и нам нужно сделать запрос в базу внутри таски? Или, например, мы шлем нотификаций через внешние сервисы, интеграции с которыми асинхронные (тут, селери нужен, например, из-за приоритетности по очередям и скейла отдельных воркеров, смс уведомлений много - воркер для этой очереди скейлим отдельно)?
@dreammanor_ru
@dreammanor_ru Год назад
Привет. Для деплоя какой хостинг можешь посоветовать? И каким сам пользуешься? (можешь прислать реф ссылку, хоть так отблагодарю)) У меня проект связан с парсингом авито, и я использую selenium. В основном парсинг на локальном ПК выполняется от часа до 4х, но это на локальном. Хочу что бы запускалось по расписанию...
@artemshumeiko
@artemshumeiko Год назад
К сожалению, не могу ничего посоветовать, так как никогда не пользовался :(
@akimovvadim4736
@akimovvadim4736 5 месяцев назад
Чувак, спасибо тебе огромное за то что рассказал про этот параметр --pool=solo. Я бошку себе чуть не сломал разгадывая по чему у меня таски в винде создаются но не отрабатывают.
@artemshumeiko
@artemshumeiko 5 месяцев назад
Рад, что помог :) Я сам потратил не один час)
@AndreyTorlopov
@AndreyTorlopov 9 месяцев назад
Ну, с каждым разом попроще в такие вещи вникать. Бек для меня совсем новая тема (много лет под ios кнопки красил). И любопытный момент заметил. По умолчанию safari с куками не дружит. Долго не мог понять почему авторизация не работает. Через chrome/yandex отлично все показывает. В Safari кук просто нет. =)
@YmNIKYm
@YmNIKYm 8 месяцев назад
Safari занял нишу которую раньше занимал ослик - "Самый гавнистый браузер для разработчика". Там часто компоненты выглядят не так как у всех и что-то работает не так как у всех и поддержка фич тоже самая плохая, при доля рынка в районе 10%. Потому я б не разрабатывал на нем новые фичи для вас, но обязательно тестировал перед релизом если важны яблочные клиенты
@RyAndrey
@RyAndrey Год назад
А как быть с асинхронными функциями? Почти всё приложение асинхронное, и задачи, соответственно, тоже.
@user-sm6ej3fl4m
@user-sm6ej3fl4m 7 месяцев назад
Поставил юбилейный 600 лайк
@artemshumeiko
@artemshumeiko 7 месяцев назад
Спасибо!!
@user-sm6ej3fl4m
@user-sm6ej3fl4m 7 месяцев назад
@@artemshumeiko Молодец, контент очень крутой
@warflow
@warflow 6 дней назад
интересная библиотека даже своя панель управления есть
@sashass099
@sashass099 Год назад
15:25 это делать надо, когда мы меняем только код самих тасок (функций обернутых в декоратор @task()) для celery ?
@artemshumeiko
@artemshumeiko Год назад
Да
@RunBull
@RunBull 8 месяцев назад
помогите кто нибудь у кого нибудь была проблема с тем что в redis загружаешь 1 задачу а он почему то отправляет потом 20-30 одинаковых задач, у меня в коде даже циклов нет но при этом если на следующий день задачи поставить то он будет ими спамить как придем время выполнения вот так я добавляю задачу task = test_request.apply_async(args=[url, start_date_value, user_id], eta=time_tomorrow)
@vadim7634
@vadim7634 Год назад
Привет Артем. Не знаешь в чем причина: Селери не видит тасок, не регает? У меня на джанге все работало, а на fastapi не хочет.
@artemshumeiko
@artemshumeiko Год назад
Привет! Возможные причины: неверно указан адрес файла с тасками при запуске селери, декоратор @app.task забыли или к брокеру не может подключиться
@vadim7634
@vadim7634 Год назад
Артем, спасибо за ответ. Я разобрался, была проблема связи в редисом и приложением. Вджанге адрес был 'redis://redis:6379/0', а в фастапи рабочий 'redis://localhost:6379/0'.
@chatgpktest123
@chatgpktest123 5 месяцев назад
Не знаю почему, но моя задача которая у Вас get_email_template_dashboard - пишет что она не зарегистрирована, хотя в логах её я вижу. Ну и командой celery он её видет, а когда я делаю get запрос, то в логах celery пишет что такска не зарегистрирована
@berzerkmatters8003
@berzerkmatters8003 2 месяца назад
кто-то знает почему flower не видит результаты прошлых тасок при новом запуске? Код не менялся, просто перезапустил flower, но в админ-панели flower - пусто
@umni_kot
@umni_kot Год назад
В смысле все нормально если картинка котика не придет? Не понял😢
@Artem-wk1vn
@Artem-wk1vn Год назад
Как думаете Python сильно потеряет в позициях в бекенде с ростом популярности Golang? Есть ли работа на бекенде для связки Python+FastAPI? Я смотрю все больше появляется вакансий где нужен Python+Go, я так понимаю для переписывания сервисов с Python на Go.?
@artemshumeiko
@artemshumeiko Год назад
Слишком много всего написано на Python, чтобы в ближайшие 5 лет его сильно сместил Go. Вакансии типа Python+Go мне тоже попадаются, но кажется, там ждут только мидлов и выше, а таких людей не особо много. Да и два языка знать далеко не всем дано, и, в целом, не сильно то и нужно :D
@Artem-wk1vn
@Artem-wk1vn Год назад
@@artemshumeiko спасибо) А вы как видите свою карьеру в будущем, планируете ближайщие лет 5 оставаться на Python?
@artemshumeiko
@artemshumeiko Год назад
Дойду до Сеньора, а дальше посмотрим :) Go, конечно, перспективная штука, но пытаться два языка для бэкенда учить на старте карьеры - это выстрел в ногу
@vladvlad3544
@vladvlad3544 11 месяцев назад
@@artemshumeiko слышал от родственника лида, что достаточно знать 1 язык и быть в нем опытным, а остальные языки уже будут быстро учиться засчет опыта. Дословно не помню, но мысль такова.
@lovi3410
@lovi3410 Год назад
Как будто половину видео просто вырезали, код который я получил в начале так и не понял зачем нужен, как селери понял вообще что именно на конкретный емаил нужно отправлять письмо, много вопросов
@valor5164
@valor5164 25 дней назад
что конкретная функция будет активироваться - отвечает декоратор над этой функцией @celery в примере в видео. при переходе по ../dashboard/ мы активировали функцию отсылания отчёта при помощи .delay(). передали аргументы для исполнения какому (имя) пользователю отсылаем. переменные же для подстановки по email - они уже были в области видимости функции. то есть вызвал бы ты эту функцию через celery или другим способом - она уже знает через какую почту и что отправить. она требует только имя, которое мы подставим в отчете.
@lovi3410
@lovi3410 25 дней назад
@@valor5164 спасибо, но уже год прошел... Я на джангу пересел
@busipac1467
@busipac1467 3 месяца назад
Ошибка, когда ввожу данные(username, password) на 'auth/login' (macOS) Сначала думал, что где-то я ошибся, потом сделал clone репы, и всё то же самое AttributeError: module 'bcrypt' has no attribute '__about__' version = bcrypt.__about__.__version_
@artemshumeiko
@artemshumeiko 3 месяца назад
это предупреждение, не ошибка просто установите последнюю версию passlib
@artem_raudsep
@artem_raudsep 11 месяцев назад
Эти уроки не для новичков, правильно? Объяснение хорошее, понятное, но откуда мне взять localhost:3000, где нажать "Отправить отчет", как проверить, всё ли работает у меня? FastAPI не позволяет писать фронт как django? Я думал это туториал по созданию приложения, а получается просто набор разных уроков по FastAPI. Придется искать новый туториал, возможно вернусь к этим видео, когда стану мидлом.
@vladvlad3544
@vladvlad3544 11 месяцев назад
Из коробки FastAPI не позволяет писать фронт, насколько я знаю. Нужно использовать шаблонизатор, например Jinja.
@YmNIKYm
@YmNIKYm 8 месяцев назад
Это туториал по бекенд разработке, а вы спрашиваете за фронт. В предыдущих уроках автор показывал, что из коробки есть swagger (127.0.0.1:8000/docs) им и пользуйтесь. Еще есть Postman. Для изучения и понимания материала, как работает бекенд с отложенными задачами, красивый фронт, который показывает автор, не нужен. Ну и да, как сказали выше. fastApi это про api-шки к которым отдельно делается SPA на JS Если чешутся руки быстро изучить фронт, то рекомендую vue.js какой-нибудь видос на 2-3 часа вам будет достаточно чтоб наверстать такую админку. А если подходить серьезно и хотите быть фулстеком то обязательно начинайте с чистого JS, чтоб понять как он устоен и как оно работает, там уже месяцев на 2-3 стоит зависнуть, потом берите хотя бы часов на 8-10 курс по vue или react и возвращайтесь )) Когда изучете фронт, то тут не будет никаких вопросов.
@user-rj3nb6gs5h
@user-rj3nb6gs5h 11 месяцев назад
Не Salary а compensation
@romanbush5164
@romanbush5164 Год назад
Емае только сейчас дошло что celery это не брокер сообщений а аналог cron, с возможностью детальнее написать метод 🤦‍♂️
Далее
FastAPI - Тестируем API с pytest #10
23:41
Просмотров 25 тыс.
FastAPI - Кэширование с Redis #8
11:25
Просмотров 22 тыс.
I Built a SECRET Tree House in My Backyard!
26:09
Просмотров 7 млн
When Steve Wants To Measure The Dog'S Height 😂️
00:19
FastAPI Celery, Flower and Docker
29:33
Просмотров 51 тыс.
Docker - Django, Celery & Redis Docker Compose setup
20:29