Celery + Django + Docker = Cat Downloader - Demo-project demonstrating the main principles of Celery

Поделиться
HTML-код
  • Опубликовано: 29 май 2021
  • Help with the development of the channel - / cyber_paddle
    A simple project that demonstrates the operation of the Celery distributed task queue and an application implemented using Django/Python.
    Source code for the project:
    github.com/dvk-net/Celery-Dja...
  • НаукаНаука

Комментарии • 53

  • @mikitayeudakimau6810
    @mikitayeudakimau6810 Год назад +2

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

  • @markostr
    @markostr 9 месяцев назад +1

    огромное спасибо за промощь !!!

  • @user-me4oh3wk2v
    @user-me4oh3wk2v 2 года назад +1

    спасибо! это как раз то что мне нужно

  • @garm8
    @garm8 3 года назад +1

    спасибо за контент! интересно было бы еще про приоритеты очередей узнать, как их реализовывать на практике

  • @stiilzizz688
    @stiilzizz688 Год назад +1

    спасибо за урок было круто сначала были проблемы но смог 0)

  • @sfrnv_n
    @sfrnv_n 2 года назад +2

    Спасибо большое, контент просто супер, очень сильно помогли

    • @cyber-paddle
      @cyber-paddle  2 года назад

      Пожалуйста, приходите еще...

  • @JuliaNekrusheva
    @JuliaNekrusheva Год назад +2

    супер инфомативно! спасибо вам!

  • @dailyvideo1593
    @dailyvideo1593 Год назад +1

    Лайк просто за превьюху)) Спасибо!

    • @cyber-paddle
      @cyber-paddle  Год назад

      А посмотреть? (ВСЁ И ВСЕ)

  • @user-kb9pn8ty8n
    @user-kb9pn8ty8n Год назад +3

    Супер, мне понравилось. Только музыка не в тему))) сосредотачиваешься, а тут что то зудит в уши. Смотрел в основном с субтитрами. И шрифт маловат)))) Благодарю, от души.

  • @user-sh3wb1cy5f
    @user-sh3wb1cy5f Год назад

    Большое спасибо! Разобрался наконец.

    • @cyber-paddle
      @cyber-paddle  Год назад

      Пожалуйста! Приходите еще, подписывайтесь, ставьте лайки.

  • @__init__.
    @__init__. Год назад +1

    Отличное видео!

    • @cyber-paddle
      @cyber-paddle  Год назад

      Спасибо, подписывайтесь, приходите еще.

  • @avanguard4762
    @avanguard4762 2 года назад +1

    спасибо!

  • @99phenomenon
    @99phenomenon Год назад +1

    Good!

  • @milord3089
    @milord3089 Год назад +1

    Лучшииииий

    • @cyber-paddle
      @cyber-paddle  Год назад

      Спаибо!
      Приходите еще, подписывайтель на канал!

  • @catpasternak6343
    @catpasternak6343 2 года назад +1

    Спасибо, видео очень помогло начать дружбу с Celery!
    Вопрос: из каких соображений переименовывали proj в src? Есть какой-то практический смысл?

    • @cyber-paddle
      @cyber-paddle  2 года назад +3

      src = source, т.е. исходный код проекта. Чтобы в репозитории сразу было видно, что это исходный код, а не что-то другое...

  • @pavlorosumaka887
    @pavlorosumaka887 Год назад +1

    thanks for your work! how you connected "def home" to your "main"? and where do the function "home" must be place? thank you

    • @cyber-paddle
      @cyber-paddle  Год назад

      Hi! Thanks for the comment.
      I use Django framework in this example, so home func is a view function in django world and I dont need to connect it to the main func.
      The entrypoint is /proj/wsgi.py

  • @DenisTabac
    @DenisTabac 2 года назад +1

    Привет!
    Спасибо за видео!
    Можешь делать и с Dramatiq?

    • @cyber-paddle
      @cyber-paddle  2 года назад +1

      Привет!
      Не приходилось никогда...

  • @ru_ush_g
    @ru_ush_g Год назад +1

    Подскажите, пожалуйста, как перезапускать docker compose так, чтобы он не выстраивал постоянно контейнеры, так как память на windows быстро заполняется. Например, если только изменяю код самого Django приложения, то по идее можно это делать более быстро, запуская только контейнер ?

    • @cyber-paddle
      @cyber-paddle  Год назад +2

      Просто docker-compose up
      Без build...
      В общем случае, в Docketfile каждая команда создает "слой", который кешируетс, таким образом то, что изменяется чаще, надо располагать как можно ниже, ибо перестраивается все, что ниже изменившегося.
      Есть еше команда docker prune ,чтобы очистить всякие ошметки

  • @MrSunTrope
    @MrSunTrope 7 дней назад +1

    Видос крутой, а почему редис работает если в композе порты не были открыты?

    • @cyber-paddle
      @cyber-paddle  7 дней назад +1

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

    • @MrSunTrope
      @MrSunTrope 7 дней назад

      @@cyber-paddle а точно, спасибо)

  • @rushanusmanov4850
    @rushanusmanov4850 8 месяцев назад +1

    появилась ошибка: unable to prepare context: path "./webapp" not found, не могу понять как исправить

    • @cyber-paddle
      @cyber-paddle  8 месяцев назад +1

      ,/webapp - относительный путь (относительно текущей папки). Может дело в этом?

  • @sunlight2093
    @sunlight2093 2 года назад +1

    Здравствуй, а почему на 12:27 ты написал ./src ./scr? У тебя ведь есть только одна папка src, внутри которой находится proj и manage.py
    Я повторял за тобой, кучу ошибок за 2 дня решил и застрял на том, что файл manage.py у меня не открывается

    • @cyber-paddle
      @cyber-paddle  2 года назад +2

      там идет копирование...
      в Dokerfile, в строке 5 устанавливаем рабочую директорию внутри образа на время сборки образа как /app - те как-бы делаем cd /app внутри собираемого образа.
      Далее в строке 7 копируем файл requirements.txt, лежащий рядом с Dokerfile (т.к ./requirements.txt) в собираемый образ в папку /app (из-за шага в стр 5)
      Далее в строке 9 копируем папку с исходным кодом, которая лежит рядом с Dokerfile (т.к ./src) в собираемый образ в папку /app/src (из-за шага в стр 5 и ./src)
      те
      COPY

  • @Snowman8526
    @Snowman8526 2 года назад +1

    Спасибо Я хоть понял как это работает. У меня вопрос а обязательно в воркер джанга и остальное? может ему создавать отдельный докер с нужным для загрузки файла и запуска celary? Меньше памяти будет занимать и быстрее работать)

    • @cyber-paddle
      @cyber-paddle  2 года назад +2

      Можно. Смотря что он делает...
      Если это вещь в себе, то можно его там одного разместить...

    • @user-kc8hi6cn2x
      @user-kc8hi6cn2x 2 года назад +1

      @@cyber-paddle если я правильно понимаю, то у celery нету доступа к django-orm, можно ли сделать аналог на django managment commands? чтобы он так же делал запросы, получал данные, а потом через django-orm ложил в БД?

    • @cyber-paddle
      @cyber-paddle  2 года назад +1

      Добрый день!
      Если как у меня в примере - есть доступ. Там полноценная джанга...
      Можно воркер сделать урезанным , тогда - да...

  • @mikewinny3856
    @mikewinny3856 2 года назад

    интересно, какого размера образуется контейнер для worker'а? он == объему контейнера основного приложения или всё же меньше его?

    • @cyber-paddle
      @cyber-paddle  2 года назад +1

      Да такой же он...
      Можно и вытряхнуть все лишнее, главное, чтобы таски были в нужном месте и все зависимости были в нужном месте...

    • @mikewinny3856
      @mikewinny3856 2 года назад

      @@cyber-paddle что значит "вытряхнуть лишнее"? есть к/л "конфигуратор" или надо делать отдельный django project?

  • @oleguser9611
    @oleguser9611 2 года назад +1

    Спасибо, познавательно. Интересно было бы узнать, как получить ответ в ту форму, откуда задача запускается. Например, я из формы хочу выполнить действие сразу на двух десятках сетевых устройств, время отклика у которых разное, и результат в виде таблички получить на этой же странице. Можно и не одновременно. Буду признателен за идеи - куда копать/что изучать , чтобы такое реализовать .

    • @cyber-paddle
      @cyber-paddle  2 года назад

      Не вдаваясь в подробноссти селери, сходу можно сделать так:
      - у каждой задачи есть ID или его можно закинуть прямо при вызове
      - задача, когда выполнилась, может сообщить об этом в общедоступное место (редис, БД)
      - когда это создано, необходимо опрашивать состояние отправленных задач со сраницы с формой (ajax + rest api..) и менять статус
      - либо задача может сделать api call в бекенд и этот кол можно отправить в websocket b можно подхватить в вебформе (websockets, django-channels, rest api...) хотя что-то выглядит сложновато...
      - можно создать группу, цепь, и тд из задач и ждать на стороне бекенда завершения всей группы, только после этого отдать ответ пользователю со статусами... docs.celeryproject.org/en/stable/userguide/canvas.html#the-primitives
      - так в пред пункте, но ответ дать сразу, а статус выполнения дать сигналом форме по websocket, что все готово...
      Ну как-то так....
      У кого есть идеи - пишите, можно будет и вмдео сделать на основе...

    • @oleguser9611
      @oleguser9611 2 года назад

      @@cyber-paddle Может когда-нибудь сделаете что-то подобное и покажете ? Такие вещи никто не показывает. В качестве task, как вариант, функция, которая отдает рандомное число или набор символов/строку c какой-то непостоянной задержкой (рандом в интервале 5-10 секунд). На исходной странице указывается число N, равное количеству запущенных в дальнейшем функций, и кнопка старта, а в итоге на странице появляется N строк, в каждой из которых результат, которой отдал этот экземпляр функции.

    • @cyber-paddle
      @cyber-paddle  2 года назад +2

      дойдут руки - сделаю....

    • @cyber-paddle
      @cyber-paddle  2 года назад +2

      Видео обрабатывается.... Скоро будет...

  • @VitalyBeketov
    @VitalyBeketov Год назад +2

    ВАЖНО:
    - Переименовывание папки proj ни в коем случае НЕ делайте через pycharm - refactor - rename.
    - Вообще всё собьётся и docker не запуститься. Просто переименуйте в операционной системе.

  • @yawneed
    @yawneed 2 года назад +1

    Автор, делай шрифт побольше, ничего же не видно.

  • @user-ey7rd9ih4g
    @user-ey7rd9ih4g Год назад +1

    Много ошибок выскакивает с путями. Запущен докер на виндовс. Собрается и запускается и сразу ошибка
    python3: can't open file '/webapp/./src/manage.py': [Errno 2] No such file or directory
    docker_celery-worker-1 | Usage: celery [OPTIONS] COMMAND [ARGS]...
    docker_celery-worker-1 | Try 'celery --help' for help.
    Error: Invalid value for '-A' / '--app':
    docker_celery-worker-1 | Unable to load celery application.
    docker_celery-worker-1 | The module proj was not found.

    • @cyber-paddle
      @cyber-paddle  Год назад +1

      Привет!
      На счет 1й ошибки - надо посмотреть почему исходный код не попал внутрь контейнера...
      А 2я эсто скорее всего из-за использования более новой версии селери. Там изменился порядок вызова...

    • @user-ey7rd9ih4g
      @user-ey7rd9ih4g Год назад +1

      @@cyber-paddle Хорошо что оперативно ответили. Так и думал. Будем копать