Как управлять миллионами задач воздушного потока с разными датами начала? - PullRequest
1 голос
/ 25 марта 2019

У меня около миллиона задач Airflow, использующих одну и ту же функцию Python.Каждый из них должен запускаться с разными датами начала и параметрами.

Ранее я задавал вопрос о том, как запустить две такие задачи под одним DAG.Однако, когда задач становится много, ответы там не масштабируются.(см. ссылку и примечания)

Вопрос

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

Примечания

Задачи не должны выполняться на PythonOperator (поскольку они происходят от функции Python).В действительности, они будут работать распределенным образом на кластере Kubernetes, скорее всего (например, с KubernetesExecutor или KubernetesPodOperator).В любом случае, архитектурная проблема, стоящая за вкладом DAG (ов), все еще остается.DAG, для динамического построения всех задач и внутри функции python, которая выполняется, чтобы передать различные даты начала.Снаружи Airflow будет выполнять каждую задачу каждый день, но внутри функции, если execution_date раньше, чем start_date, функция будет просто return 0.

1 Ответ

1 голос
/ 26 марта 2019

После нашего разговора в комментариях я думаю, что могу получить ответ:

Воздушный поток может использоваться в миллионах динамических задач, но не должен.Предполагается, что DAG воздушного потока будут довольно постояннымиВы все еще можете использовать Airflow, например, для обработки всей группы пользователей (предоставленных откуда-то) и позже использовать эту информацию в своем процессе ETL.

Я рекомендую построить систему задач поверх Библиотека сельдерея (не путайте с CeleryExecutor в Airflow, потому что Airflow можно использовать поверх Celery).Это очередь задач, ориентированная на миллионы задач реального времени:

Сельдерей используется в производственных системах для обработки миллионов задач в день.

Сельдерейнаписанный на Python, готов к работе, стабилен и невероятно масштабируем.Я думаю, что это лучший инструмент для решения вашей проблемы.

...