2016-03-29 12 views
1

私はPythonのAirflowライブラリを使用しようとしています。私はそれが定期的にWebページをこすりたい。PythonのAirflowでは、一定時間後にタスクが実行されないようにするにはどうすればいいですか?

start_dateが数日前の場合、私がスケジューラを起動すると、start_dateから今日までバックフィルされるという問題があります。例:

今日は月の20日を想定しています。

start_dateが今月の15日であるとします。

20日にスケジューラを起動すると、20日に5回ページが削られます。 DAGインスタンスが15日に実行され、20日にそのDAGインスタンス(15日のインスタンス)が実行されることがわかります。そして、それは20日にDAGインスタンスを実行します。

要するに、気流は「追いつく」ことを試みますが、これはウェブスクレーピングには意味がありません。

エアフローでDAGインスタンスが一定時間後に失敗したと見なす方法はありますか?

+0

これは数ヶ月前に新しい「LatestOnlyOperator」(http://stackoverflow.com/a/40578704/596167にあります)としてAirflowに追加されたようです。 #1155を発行するための –

答えて

3

この機能はAirflowのロードマップにありますが、現在は存在しません。

参照: Issue #1155

あなたが一緒にBranchPythonOperatorを使用してソリューションをハックすることができるかもしれません。ドキュメントに記載されているように、depends_on_past=Falseを設定してください(これがデフォルトです)。私は気流を設定していないので、現時点ではサンプルコードをテストして提供することはできません。

+0

404。それは解決されますか? – enriquetaso

+0

彼らは問題をJiraに移しました:https://issues.apache.org/jira/browse/ZOOKEEPER-2892?jql= – hoju

1

気流は、「バックフィル」を考慮して設計されているため、ロードマップ項目はその主なロジックとは異なります。

今のところ、この特定のタスクまたはダグ全体についてstart_dateを更新できます。

すべてのオペレータは、スケジューラが停止されているために作られていませんstart_dateの http://pythonhosted.org/airflow/code.html#baseoperator

を持っています。あなたが今日それを実行するなら、あなたの仕事を今日に設定するかもしれません、私のためのロジックを見てください。

関連する問題