Django & Celery — менеджер задач с открытым исходным кодом
Привет!
В этой статье представлен диспетчер задач с открытым исходным кодом на базе Джанго и Сельдерей. Продукт можно использовать для выполнения фоновых задач, которые обычно занимают много времени, с полным контролем: запускать, отменять выполнение, просматривать выходные данные и журналы выполнения после завершения задач. Будучи выпущенным под лицензией MIT, исходный код можно использовать в коммерческих проектах или в деятельности по электронному обучению. Спасибо за прочтение!
✨ Особенности продукта
В этом проекте реализован механизм, который позволяет запускать/отменять задачи по запросу с помощью простого пользовательского интерфейса. Вот основные функции, представленные в этой первой версии:
- ✅ Каркас: Джанго
- ✅ Управление асинхронными задачами через Сельдерей
- ✅
Actions
: Создать/Отменить - ✅ Доступ к пользовательскому интерфейсу для журналов выполнения и выходных данных
- ✅ Типы задач: Скрипты RUNNER и Пользователи Print
- ✅ Начальная загрузка 5 Дизайн,
Dark Mode
Как только задача запущена, ее текущее состояние немедленно отображается в пользовательском интерфейсе. Это поведение отображается в пользовательском интерфейсе с помощью элементов управления пользовательского интерфейса, которые предлагают состояние задачи и параметр «Отмена».
Все запущенные задачи можно отменить, и эта функция может быть полезна, когда фоновая задача выполняется дольше, чем ожидалось.
Для завершенных задач пользователи могут проверить выходные данные задачи непосредственно в пользовательском интерфейсе и визуализировать журнал RUNTIME, если потребуются дополнительные сведения о выполнении.
✨ Как использовать продукт
Для обработки фоновых задач требуется работающая служба Redis, а адрес службы должен быть настроен в проекте. настройки (специальный раздел):
CELERY_BROKER_URL = os.environ.get("CELERY_BROKER", "redis://localhost:6379")
CELERY_RESULT_BACKEND = os.environ.get("CELERY_BROKER", "redis://localhost:6379")
CELERY_TASK_TRACK_STARTED = True
CELERY_TASK_TIME_LIMIT = 30 * 60
CELERY_CACHE_BACKEND = "django-cache"
CELERY_RESULT_BACKEND = "django-db"
CELERY_RESULT_EXTENDED = True
CELERY_RESULT_EXPIRES = 60*60*24*30
CELERY_ACCEPT_CONTENT = ["json"]
CELERY_TASK_SERIALIZER = 'json'
CELERY_RESULT_SERIALIZER = 'json'
Если предположить, что Redis запущен и работает, вот шаги для запуска продукта в локальной среде:
👉 Шаг 1 — Клонировать исходники из общедоступный репозиторий
$ git clone
$ cd sample-django-celery
👉 Шаг 2 — Установите модули, используя виртуальную среду
$ virtualenv env
$ source env/bin/activate
$ pip3 install -r requirements.txt
👉 Шаг 3 — Перенести базу данных
$ python manage.py makemigrations
$ python manage.py migrate
👉 Шаг №4 — Начать проект
$ python manage.py runserver
Используя отдельное окно терминала, следующая команда запускает Celery
менеджер:
👉 Шаг № 5 — Активировать ВЕНВ
$ source env/bin/activate
👉 Шаг № 6 — Запустить менеджер
$ celery --app=core.celery.app worker --loglevel=info
На этом этапе мы должны иметь возможность выполнять задачи, используя учетную запись суперпользователя. Обычные пользователи могут только просматривать выходные данные задач и журналы выполнения.
✨ Видеопрезентация
Короткую демонстрацию, которая обобщает все вышеперечисленные функции, можно найти на YouTube.
👉 Диспетчер задач Django и Celery — ВИДЕО Презентация
Спасибо за прочтение! Дополнительные ресурсы и поддержка доступны по адресу: