Je peux configurer airflow.cfg
fichier pour exécuter les tâches l'une après l'autre.
Ce que je veux faire, c'est exécuter des tâches en parallèle, par ex. 2 à la fois et atteindre la fin de la liste.
Comment puis-je configurer cela?
L'exécution de tâches dans Airflow en parallèle dépend de l'exécuteur que vous utilisez, par exemple, SequentialExecutor
, LocalExecutor
, CeleryExecutor
, etc.
Pour une configuration simple, vous pouvez réaliser le parallélisme en définissant simplement votre exécuteur sur LocalExecutor
dans votre airflow.cfg:
[core]
executor = LocalExecutor
Cela entraînera un processus distinct pour chaque tâche.
(Bien sûr, vous aurez besoin d'un DAG avec au moins 2 tâches qui peuvent s'exécuter en parallèle pour le voir fonctionner.)
Alternativement, avec CeleryExecutor
, vous pouvez faire tourner n'importe quel nombre de travailleurs en exécutant simplement (autant de fois que vous le souhaitez):
$ airflow worker
Les tâches seront placées dans une file d'attente de céleri et chaque employé de céleri se retirera de la file d'attente.
La section Mise à l'échelle avec du céleri dans les documents de configuration d'Airflow peut être utile.
https://airflow.Apache.org/howto/executor/use-celery.html
Pour tout exécuteur, vous souhaiterez peut-être modifier les paramètres de base qui contrôlent le parallélisme une fois que vous l'avez exécuté.
Ils se trouvent tous sous [core]
. Ce sont les valeurs par défaut:
# The amount of parallelism as a setting to the executor. This defines
# the max number of task instances that should run simultaneously
# on this airflow installation
parallelism = 32
# The number of task instances allowed to run concurrently by the scheduler
dag_concurrency = 16
# Are DAGs paused by default at creation
dags_are_paused_at_creation = True
# When not using pools, tasks are run in the "default pool",
# whose size is guided by this config element
non_pooled_task_slot_count = 128
# The maximum number of active DAG runs per DAG
max_active_runs_per_dag = 16