为什么任务卡住而不是在气流中执行?

时间:2018-05-04 11:59:29

标签: airflow airflow-scheduler

我正在试用BigQueryOperator的气流。我想我以后会使用谷歌作曲家,但我希望它先在本地运行。我有气流并运行BashOperator工作正常,我也可以运行airflow test <dag> <task>其中task是我想要运行的大查询任务,但是当我从UI触发DAG时bigquery任务永远不会排队。相反,它们具有REMOVED状态,没有任何反应。

我的DAG定义如下:

from airflow import DAG
from airflow.operators.bash_operator import BashOperator
from datetime import datetime, timedelta
from airflow.contrib.operators.bigquery_operator import BigQueryOperator

yesterday = datetime.combine(
    datetime.today() - timedelta(1),
datetime.min.time())

default_args = {
    'owner': 'airflow',
    'depends_on_past': False,
    'email': ['airflow@example.com'],
    'start_date': yesterday,
    'email_on_failure': False,
    'email_on_retry': False,
    'retries': 1,
    'retry_delay': timedelta(minutes=5),
}

with DAG(
        'tutorial', default_args=default_args) as dag:

operators
    t1 = BashOperator(
        task_id='print_date',
        bash_command='date')

    template_sql = '''
            SELECT 'TOMAS' name, '{{ params.my_value }}' value, "{{ params.my_value2 }}" tables
        '''

    sampleBigQuery1 = BigQueryOperator(
        task_id='bq_simple_sql1',
        bql=template_sql,
        use_legacy_sql=False,
        destination_dataset_table='temp_tomas.airflow_1',
        allow_large_results=True,
        params={'my_value': (datetime.now()).strftime("%D %T"),
                'my_value2': "yolo"},  # getTables()},
        create_disposition='CREATE_IF_NEEDED',
        write_disposition='WRITE_TRUNCATE'
    )

    t1 >> sampleBigQuery1

那么如何在运行airflow test ...时调试一个案例,而不是在调度程序或UI触发时调整案例?这件事在我这里有什么不对吗?

本地我正在使用sqllite的标准气流安装,但我认为这不会产生任何影响。我在一个python环境中运行所有内容,所以它应该被包含在内。

1 个答案:

答案 0 :(得分:2)

如果这是您的第一个Airflow设置,您可能需要先检查这些内容:Airflow 1.9.0 is queuing but not launching tasks

此外,在这里我特别推荐最后一步:

  • 如果没有其他工作,您可以使用web ui点击dag,然后点击Graph View。现在选择第一个任务,然后单击Task Instance。在段落任务实例详细信息中,您将看到DAG正在等待或未运行的原因。

这可能会让您更好地了解未安排任务的原因。