ym104432846
Вставьте ссылку на видео из Youtube, Rutube, VK видео
Задайте вопрос по видео
Что вас интересует?
00:00:15
Установка и запуск Flower:
  • 1. Установлена библиотека flower и запущено приложение через команду `app tasks:selari:flower`
  • 2. Запущен сервер на адресе локалхост 5555 (интерфейс Flower)
  • 3. Подключены к Redis-сервису
00:01:03
Работа с тасками в Flower:
  • Разработана концепция мониторинга и обновления таск-активности с использованием дашборда и отображением количества активных и неуспешно обработанных тасков
  • Предложено добавить новую функцию букинга (экзекьют), обновить страницу и проверить выполнение новой таски
  • Рассмотрен вопрос добавления картинки и названия таски, интеграции работы с сайтом через nginx и возможности взаимодействия админки и интерфейсов на одном сервере с разными портами
00:04:02
Анализ работы тасков и мониторинг:
  • 1. Селари является отдельной сущностью, связанной с основным приложением, запущена в отдельном процессе вместе с Flower, используется для выполнения фоновых и отложенных задач
  • 2. Результаты выполненных задач хранятся в Redis, после завершения задачи селари обновляет её статус в очереди Redis
  • 3. Redis также служит временным хранилищем промежуточных результатов вычислений, включая результаты экспериментов и машинного обучения
0: Пришла пора посмотреть нам на инструмент, который позволяет в удобном веб интерфейсе взаимодействовать с ELARI, и смотреть его работу, потому что, согласитесь, неудобно заходить в редис и смотреть, все ли там таски выполнены, заходить в консоль и смотреть, что там.
1: Пишет селари, все ли у него там саксиде, все ли у него там ресит, гораздо удобно пользоваться каким-то сторонним приложением, и оно есть и называется flower мы уже установили эту библиотеку, давайте её запустим, откроем новую командную строку это ещё 1 процесс.
2: И он запускается Ровно также мы указываем опять же app таскс точка селари, двоеточие, селари, и здесь вместо воркер мы запускаем флауэр, и нам уже не нужен лог левел, нам не нужен пул. Вот все эти параметры мы оставляем так, нажимаем enter.
3: И если у нас установлена библиотека, то все будет окей. У нас будет подключение к редису и тут нам подсказывает, что можно посетить по адресу локал хост 5 5 5 5 собственно наш флауэр, давайте на него зайдём.
4: И он выглядит в 1 очередь. Так. У нас есть какой-то дашборд, у нас есть количество тасок активных, которые обрабатываются, которые не обработались успешно обработались и ещё 1 раз пытаются, ещё несколько раз пытались обработаться.
5: В cellar есть классная тема когда у нас таска не выполнилась, можно её обрабатывать ещё несколько раз, пока она там не обработается или пока не закончится количество попыток у нас здесь есть собственно наш селари, есть все таски и есть брокер брокер, это у нас редис тасок никаких нет.
6: Давайте что-нибудь сделаем. Давайте, например, добавим новый букинг экзекьют и посмотрим, что у нас флауэр в тасках. Обновим страницу. У нас появилась таска. Вот её название. Название функции у нас есть, её идентификатор, есть состояние успешно.
7: Есть аргументы, которые мы передаём, да, мы передаём, собственно, сам букинг и почту, на которую нужно отправить сообщение. И дальше какие-то ещё данные по времени, когда получилась таска, когда она запустилась, и время выполнения. И на самом деле это очень удобно. Вот так.
8: Мониторить таски. Давайте ещё что-нибудь сделаем давайте загрузим например картинку, посмотрим как это у нас дело отработает там какое-нибудь название. Картиночку Сыктывкар погнали заходим во flower и у нас
9: Уже здесь 2 таски, у нас есть таска с обработкой фотографии, также мы видим аргументы и очень удобно анализировать. Можно через nginx. Если вы умеете работать, как-то это дело встроить в сайт, у вас будет, допустим, и
10: Админка, о которой мы поговорим позже и апишка и flower и все на 1 сайте просто на разных портах, может оно будет работать, но тем не менее можно будет взаимодействовать со всеми веб интерфейсами, это действительно очень удобно.
11: Давайте вот ещё на что посмотрим. У нас таски очень быстро выполняются. Мы можем немножко усложнить работу селари и сказать, что у нас таска выполняется. Допустим, долго. Давайте импортируем модуль из модуля из библио.
12: Time импортируем тайм и точнее простите, импортируем слип и поспим чуть чуть буквально там 10, 5, 10 секунд, 10 секунд, чтобы мы увидели, как отрабатывает у нас flow.
13: И получать задание. Напомню, если мы меняем таски, обязательно селари нужно перезагрузить флаур, я думаю, можно не трогать. А вот селари стоит перезагрузить. Итак, давайте посмотрим, у нас по прежнему есть 2 таски.
14: Потому что данные берутся из редиса, и давайте ещё раз отправим сообщение.
15: Давайте добавим букинг на, допустим, 1 комнату. 1 номер. Мы получили все данные, быстренько идём в редис, и тут у нас таска стартет, она стартовала, и мы будем обновлять до тех пор, пока она не будет не закончена и на
16: На самом деле, через 10 секунд мы получим данные, да, что прошло там 10 с половиной секунд и тоска обработалась. И таким образом вы можете анализировать ещё, сколько времени занимают задачи фоновые, асинхронные, отложенные задачи и смотреть, может, где какой-то Затык есть, да, может какая-то задача занимает.
17: Там минуты или часы, и она тормозит весь процесс. Вот так не сложно поднимается флауэр, можно с помощью него смотреть в целом состояние системы, как у нас отправляются сообщения, обрабатываются картинки в целом ранятся Зада.
18: И смотреть их время выполнения и статусы на этом. Наше знакомство с отложенными задачами не заканчивается. В фастапи есть ещё 1 функционал простенький, который позволяет работать с фоновыми задачами, и мы на него посмотрим в следующем видео. А пока
19: Пока давайте подведём итог по селари, давайте посмотрим на нашу архитектуру и где у нас находится здесь селари селари. Это некоторая отдельная сущность, которая тем не менее, связана с нашим
20: С нашим приложением и она находится внутри там той же директории, что наше приложение, тем не менее оно запускается в отдельном процессе, там и flower тоже запускается в отдельном процессе и позволяет выполнять задачи, задачи.
21: Хранятся в редисе и селари. Их из редиса забирает по очереди. То есть в редисе хранится очередь этих задач. Как только задача выполнена, селари обновляет статус таски в редисе. И таким образом, флауэр, например, который мониторит
22: Редис, он может видеть, что таска выполнена. Также редис может служить и хранилищем результатов, задач. Если есть какие-то задачи для обработки там машин, лернинг моделей, и нам, допустим, нужен какой-то результат аб тестирования ещё чего-либо.
23: Их можно хранить в редисе и затем через специальный функционал в целлере можно обращаться к результатам выполнения конкретной задачи здесь это не было реализовано.