2016-03-29 3 views
1

Я пытаюсь использовать библиотеку Airflow Python. Я хочу, чтобы он периодически царапал веб-страницу.В Airflow Air Python, как я могу остановить выполнение задачи через определенное время?

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

Предположим, сегодня это 20-е число месяца.

Предположим, что start_date - это пятнадцатого числа этого месяца.

Если я запустил планировщик 20-го числа, он будет царапать страницу 5 раз на 20-м. Он увидит, что экземпляр DAG должен был работать 15-го числа и будет запускать этот экземпляр DAG (тот, который будет показан на 15-м) 20-го числа. И тогда он будет запускать экземпляр DAG для 16-го числа 20-го и т. Д.

Вкратце, Airflow попытается «догнать», но это не имеет смысла для веб-соскабливания.

Есть ли способ заставить Airflow рассматривать экземпляр DAG сбой через определенное время?

+0

По-видимому, это было добавлено в Airflow несколько месяцев назад в качестве нового 'LatestOnlyOperator' (найдено в http://stackoverflow.com/a/40578704/596167). –

ответ

3

Эта функция приведена в дорожной карте для Airflow, но в настоящее время ее не существует.

См: Issue #1155

Вы можете быть в состоянии взломать вместе решение, используя BranchPythonOperator. Как говорится в документации, убедитесь, что вы установили depends_on_past=False (это значение по умолчанию). У меня нет настройки воздушного потока, поэтому я не могу проверить и предоставить вам пример кода в это время.

+0

404 выпуск № 1155. Решено ли? – enriquetaso

+0

они переместили проблемы в Jira: https://issues.apache.org/jira/browse/ZOOKEEPER-2892?jql= – hoju

1

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

На данный момент вы можете обновить start_date по этой задаче или всему дагу.

Каждый оператор имеет Дата_начала http://pythonhosted.org/airflow/code.html#baseoperator

Планировщик не для остановки. Если вы запустите его сегодня, вы можете установить свою задачу start_date на сегодня, для меня это логика.

Смежные вопросы