我一直在研究Apache Airflow一段时间来安排我的工作流程。我似乎在安排我的DAG时遇到问题。我一直在使用这个SO问题作为参考:Airflow not scheduling Correctly Python
from airflow import DAG
from airflow.operators.bash_operator import BashOperator
from datetime import datetime
from datetime import timedelta
default_args = {
'owner': 'airflow',
'depends_on_past': False,
'start_date': datetime.now() - timedelta(minutes=5),
'email': ['airflow@airflow.com'],
'email_on_failure': False,
'email_on_retry': False,
'retries': 1,
'retry_delay': timedelta(minutes=5),
}
dag = DAG('dag_mkdir_folder', default_args=default_args,
schedule_interval=timedelta(minutes=5))
task_hello = BashOperator(task_id='print_hello',
bash_command='mkdir test_airflow', dag=dag)
我尝试使用以下命令列表运行任务:
airflow scheduler
airflow trigger_dag dag_mkdir_folder
我一直认为这是一个错误:
[2017-05-15 13:49:06,688] {models.py:322} DagFileProcessor406 INFO - Finding 'running' jobs without a recent heartbeat [2017-05-15 13:49:06,689] {models.py:328} DagFileProcessor406 INFO - Failing jobs without heartbeat after 2017-05-15 13:44:06.689284
bash命令只是创建一个新目录。测试版工作正常。
答案 0 :(得分:0)
在另一个终端上运行调度程序,然后在另一个终端中触发你的dag
还尝试提供您要创建目录的完整路径。 例如,在气流目录中创建文件夹:
<div class="form-group radio_buttons optional quote_prev_cover">
<label class="control-label radio_buttons optional">Previous cover</label>
<input name="quote[prev_cover]" value="" type="hidden">
<span class="radio">
<label for="quote_prev_cover_true">
<input class="radio_buttons optional" value="true" name="quote[prev_cover]" id="quote_prev_cover_true" type="radio">Yes</label>
</span>
<span class="radio">
<label for="quote_prev_cover_false">
<input class="radio_buttons optional" readonly="readonly" value="false" name="quote[prev_cover]" id="quote_prev_cover_false" type="radio">No</label>
</span>
</div>
这应该在气流中创建test_airflow文件夹
答案 1 :(得分:0)
您当前的bash_command告诉Airflow在DAG运行时使用的临时目录内创建一个目录,在DAG运行后它会随其所有内容一起消失。
考虑将目录更改为您要在其中创建目录的目录。
使用它的bash_command类似于:
"cd <path_to_directory>; mkdir test_airflow"