Ответ
Cron — это стандартный демон-планировщик задач в Unix-подобных системах. Airflow — это полноценная платформа для программного создания, планирования и мониторинга сложных потоков задач (workflows).
Основное различие заключается в масштабе и возможностях.
Характеристика | Cron | Airflow |
---|---|---|
Основная задача | Выполнение команд по простому расписанию | Оркестрация сложных потоков задач (DAGs) |
Зависимости | Не поддерживает. Задачи независимы. | Ключевая функция. Задачи могут зависеть друг от друга. |
Мониторинг | Отсутствует (только логирование в системные файлы) | Продвинутый Web UI с визуализацией, логами, статистикой. |
Масштабируемость | Ограничена одной машиной | Горизонтально масштабируемая архитектура (workers, scheduler). |
Повторный запуск | Только вручную | Автоматический повторный запуск упавших задач. |
Конфигурация | Простой текстовый файл (crontab ) |
Задачи описываются как код на Python (DAGs). |
Когда что использовать?
-
Cron идеально подходит для простых, изолированных и повторяющихся задач на одном сервере. Например, запуск скрипта для резервного копирования раз в сутки.
# Запускать скрипт backup.sh каждый день в 03:00 0 3 * * * /home/user/scripts/backup.sh
-
Airflow необходим для построения сложных ETL/ELT-пайплайнов, где задачи зависят друг от друга, требуют мониторинга, логирования и могут выполняться распределенно.
# Пример DAG в Airflow from airflow.operators.bash import BashOperator with DAG(dag_id='data_pipeline', schedule_interval='@daily') as dag: extract_data = BashOperator(task_id='extract', bash_command='... ') transform_data = BashOperator(task_id='transform', bash_command='...') load_data = BashOperator(task_id='load', bash_command='...') # Определение зависимостей extract_data >> transform_data >> load_data
Вывод: Cron — это таймер, Airflow — это дирижёр для оркестра.