Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/353.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 远程执行时dag bash任务延迟_Python_Scheduling_Directed Acyclic Graphs_Airflow - Fatal编程技术网

Python 远程执行时dag bash任务延迟

Python 远程执行时dag bash任务延迟,python,scheduling,directed-acyclic-graphs,airflow,Python,Scheduling,Directed Acyclic Graphs,Airflow,我正在尝试用气流来取代我们现有的cron编排,一切看起来都很有希望。我已经成功地安装并获得了一个dag来计划和执行,但我注意到它们在我指定的每个任务之间都有很大的延迟(至少15分钟到60分钟) 我的dag定义如下 我是不是错过了让他们一个接一个地跑的东西 我没有用芹菜 调度器和Web服务器都在同一台主机上运行 是的-需要调用远程执行(在此之前使用某种形式的本地操作) 并且,无法在远程服务器上安装airflow Dag应该每天在UTC凌晨1点运行一次,按照我给它设置的任务路径运行 注意:我没有执行

我正在尝试用气流来取代我们现有的cron编排,一切看起来都很有希望。我已经成功地安装并获得了一个dag来计划和执行,但我注意到它们在我指定的每个任务之间都有很大的延迟(至少15分钟到60分钟)

我的dag定义如下

我是不是错过了让他们一个接一个地跑的东西

我没有用芹菜 调度器和Web服务器都在同一台主机上运行 是的-需要调用远程执行(在此之前使用某种形式的本地操作) 并且,无法在远程服务器上安装airflow Dag应该每天在UTC凌晨1点运行一次,按照我给它设置的任务路径运行

注意:我没有执行气流回填(这很重要吗?

发现问题 我没有在airflow.cfg文件中将配置从sequential更改为localExecutor

我通过电话找到了答案


观看

中的详细视频,我不确定有向无环图标签在这里是否合适——图论中的主题专业知识无法帮助人们回答这个问题,因此,在订阅源中跟踪该标记的人可能会发现这个问题对他们不感兴趣,除非他们也在跟踪
气流
。顺便问一下,您确定任务在预期完成时确实正在退出吗?你检查过进程表了吗?我检查过了,任务监视器上捕获的日志/标准输出显示得很好。我很好奇,我是否需要多个工作进程来让调度器对后续任务排队。很好,stdout看起来是完整的,但是,您是否验证了进程实际上已退出?SSH进程有时会在操作结束时挂起,例如,如果它们留下的任何子进程持有连接的stdin/stdout/stderr上打开的文件描述符。
import airflow
from builtins import range
from airflow import DAG
from airflow.operators.bash_operator import BashOperator
from airflow.models import DAG
from datetime import datetime, timedelta

args = {
    'owner': 'user1',
    'depends_on_past': False,
    'start_date': airflow.utils.dates.days_ago(2),
    'email': ['data-etl-errors@user1.com'],
    'email_on_failure': True,
    'email_on_retry': False,
    'wait_for_downstream': True,
    'schedule_interval': None,
    'depends_on_past': True,
    'retries': 1,
    'retry_delay': timedelta(minutes=5)
}

 dag = DAG(
       dag_id='airflow_pt1'
     , default_args=args
     , schedule_interval='0 1 * * *'
     , dagrun_timeout=timedelta(hours=8))

 task1 = BashOperator(
       task_id='task1'
     , bash_command='ssh user1@remoteserver /path/to/remote/execution/script_task1.sh'
     , dag=dag,env=None, output_encoding='utf-8')

 task2 = BashOperator(
       task_id='task2'
     , bash_command='ssh user1@remoteserver /path/to/remote/execution/script_task2.sh'
     , dag=dag,env=None, output_encoding='utf-8')

 task3 = BashOperator(
       task_id='task3'
     , bash_command='ssh user1@remoteserver /path/to/remote/execution/script_task3.sh'
     , dag=dag,env=None, output_encoding='utf-8')

 task4 = BashOperator(
       task_id='task4'
     , bash_command='ssh user1@remoteserver /path/to/remote/execution/script_task4.sh'
     , dag=dag,env=None, output_encoding='utf-8')

 task2.set_upstream(task1)
 task3.set_upstream(task1)
 task4.set_upstream(task2)