Асинхронные модули рабочего процесса на основе Python: В чем разница между рабочим процессом сельдерея и рабочим процессом luigi?

Я использую django как веб-фреймворк. Мне нужен механизм рабочего процесса, который может выполнять синхронную, а также асинхронную (пакетные задачи) цепочку задач. Я нашел сельдерей и luigi в качестве рабочего процесса обработки партии. Мой первый вопрос - в чем разница между этими двумя модулями.

Луиджи позволяет нам перезапустить неудачную цепочку задач, и только неудачные подзадачи получают повторное выполнение. Что касается сельдерея: если мы запустим цепочку (после исправления неудачного кода подзадачи), будет ли она повторно выполнять уже выполняемые подзадачи?

Предположим, у меня есть две подзадачи. Первый создает некоторые файлы, а второй читает эти файлы. Когда я помещаю их в цепочку сельдерея, вся цепочка выходит из строя из-за ошибки кода во второй задаче. Что происходит, когда я повторно запускаю цепочку после исправления кода во второй задаче? Будет ли первая задача пытаться воссоздать эти файлы?

Ответы

Ответ 1

Обновление: Как указал Эрик, сельдерей - лучший выбор для этого случая.

Сельдерей:

Что такое сельдерей?

Сельдерей - простая, гибкая и надежная распределенная система для обработки огромного количества сообщений, обеспечивая при этом операции с инструментами, необходимыми для поддержания такой системы.

Зачем использовать сельдерей?

  • Он прост в использовании и имеет множество функций.
  • django-celery: обеспечивает хорошую интеграцию с Django.
  • цветок: монитор в реальном времени и веб-админ для распределенной очереди задач Selery.
  • Активное и крупное сообщество (основано на деятельности Stackoverflow, Pyvideos, учебниках, сообщениях в блогах).

Luigi

Что такое Луиджи?

Luigi (Spotify недавно открытая исходная структура Python) представляет собой пакет Python, который помогает вам создавать сложные конвейеры пакетных заданий. Он обрабатывает разрешение зависимостей, управление рабочим процессом, визуализацию, сбои обработки, интеграцию с командной строкой и многое другое.

Зачем использовать Luigi?

  • Встроенная поддержка Hadoop.
  • Достаточно общего для использования для всего: от простого выполнения задач и мониторинга на локальной рабочей станции до запуска огромных цепей обработки задач, которые могут выполняться в синхронизации между многими машинами в течение нескольких дней.
  • Lugi visualiser: дает хороший визуальный обзор графика зависимости рабочего процесса.

Вывод: Если вам нужен инструмент, чтобы просто планировать задачи и запускать их, вы можете использовать Celery. Если вы имеете дело с большими данными и огромной обработкой, вы можете пойти на Луиджи.

Ответ 2

(Я автор Луиджи)

Луиджи не предназначен для синхронной системы с малой задержкой. Это предназначено для больших пакетных процессов, которые работают в течение нескольких часов или дней. Поэтому я думаю, что для вашего случая использования сельдерей может быть немного лучше