в чем разница между «параллелизмом» воздушного потока и «dag_concurrency» - PullRequest
1 голос
/ 17 апреля 2019

Я не могу понять разницу между dag_concurrency и parallelism. документация и некоторые соответствующие посты здесь как-то противоречат моим выводам.

У меня было понимание, что параметр parallelism позволяет вам установить МАКС. Число глобальных (для всех групп DAG) TaskRuns, возможных в воздушном потоке, и dag_concurrency, чтобы обозначить МАКС. Число TaskRuns, возможных для одного Dag.

Поэтому я установил parallelism на 8 и dag_concurrency на 4 и запустил один Dag. И я узнал, что он запускает 8 TI одновременно, но я ожидал, что он будет работать 4 одновременно.

  1. Как это возможно?

  2. Кроме того, если это поможет, я установил размер пула в 10 или около того для этих задач. Но это не должно было иметь значения, так как параметры "config" имеют более высокий приоритет, чем пул, верно?

Ответы [ 2 ]

1 голос
/ 21 апреля 2019

Другой ответ верен лишь частично:

dag_concurrency явно не контролирует задачи на одного работника. dag_concurrency - это количество задач, выполняемых одновременно на один dag_run. Таким образом, если в вашей группе обеспечения доступности баз данных есть место, где одновременно могут выполняться 10 задач, но вы хотите ограничить трафик для рабочих, вы должны установить dag_concurrency ниже.

Настройка очередей и пулов также влияет на количество задач на одного работника.

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

параллелизм - это максимальное количество задач для всех рабочих и групп DAG.

0 голосов
/ 19 апреля 2019

parallelism лучше воспринимается как max_active_tasks_total. Вы устанавливаете его на 8, говоря: «Я хочу, чтобы одновременно выполнялось только 8 задач между всеми рабочими».

dag_concurrency лучше как max_active_tasks_for_worker. Вы устанавливаете его на 4, говоря: «Я хочу, чтобы каждый работник запускал не более 4 экземпляров одновременно, максимум».

Таким образом, когда вы запускали ваш dag, он выполнял всего 8 экземпляров задач между двумя двумя работниками, каждый из которых выполнял 4 задачи. Я думаю, что вы просто напутали на dag_concurreny.

Этот ответ был частично взят из этого SO-ответа здесь: SO-ответа

...