这是我在Stack上的第一篇文章,它与Airflow有关。我需要实现一个DAG:
1 /从API下载文件
2 /将其上传到Google云端存储
3 /将它们插入BigQuery
事情是,第1步涉及约170个账号。如果在下载过程中出现任何错误,我希望我的DAG自动从abended步骤重试它。因此,我在我的任务之上实现了一个循环,例如:
dag = DAG('my_dag', default_args=DEFAULT_ARGS)
for account in accounts:
t1 = PythonOperator(task_id='download_file_' + account['id'],
python_callable=download_files(account),
dag=my_dag)
t2 = FileToGoogleCloudStorageOperator(task_id='upload_file_' + account['id'],
google_cloud_storage_conn_id = 'gcs_my_conn',
src = 'file_' + account['id'] + '.json',
bucket = 'my_bucket',
dag=my_dag)
t3 = GoogleCloudStorageToBigQueryOperator(task_id='insert_bq',
bucket = 'my_bucket',
google_cloud_storage_conn_id = 'gcs_my_conn',
bigquery_conn_id = 'bq_my_conn',
src = 'file_' + account['id'],
destination_project_dataset_table = 'my-project:my-dataset.my-table',
source_format = 'NEWLINE_DELIMITED_JSON',
dag=my_dag)
t2.set_upstream(t1)
t3.set_upstream(t2)
因此,在UI级别,我有大约170个每个任务显示的实例。当我手动运行DAG时,Airflow就像我所看到的那样无所事事。 DAG不会在任何任务实例上初始化或排队。我想这是由于涉及的实例数量,但我不知道如何解决这个问题。
我应该如何管理这么多任务实例?
谢谢,
亚历
答案 0 :(得分:0)
您目前如何运行气流?你确定airflow scheduler
正在运行吗?
您还可以运行airflow list_dags
以确保可以编译dag。如果您使用Celery运行气流,您应该注意在运行气流的所有节点上使用list_dags
显示您的dag。
答案 1 :(得分:0)
亚历克斯,在这里发帖会更容易,我看到你有DEFAULT_ARGS,其重试次数是DAG级别,你也可以在任务级别设置重试次数。它位于BaseOperator中,因为所有Operator都将继承BaseOperator然后您可以使用它,您可以在此处找到更多详细信息:https://github.com/apache/incubator-airflow/blob/master/airflow/operators/python_operator.py和https://github.com/apache/incubator-airflow/blob/master/airflow/models.py#L1864,如果您在模型中选中BaseOperator,它会{{1} }和retries
,您可以这样做:
retry_delay