Airflow 如何使用nohup检查SSHOperator以查看是否完成了dag的工作?

Airflow 如何使用nohup检查SSHOperator以查看是否完成了dag的工作?,airflow,airflow-scheduler,airflow-operator,Airflow,Airflow Scheduler,Airflow Operator,我创建了一个在ec2实例上运行python脚本的dag。python脚本大约需要2-3个小时才能完成,因此我向SSHOperator添加了一个nohup命令。如何检查interval以查看ec2 python脚本作业是否完成?我考虑过更新一个环境变量,如果变量在3小时内没有更新,dag就会出错。不知道我该怎么做,也不知道是否有特定的操作员可以帮助我完成这项任务。或者,非常感谢任何其他最佳实践建议 t2 = SSHOperator( ssh_conn_id='ec2_worker',

我创建了一个在ec2实例上运行python脚本的dag。python脚本大约需要2-3个小时才能完成,因此我向SSHOperator添加了一个nohup命令。如何检查interval以查看ec2 python脚本作业是否完成?我考虑过更新一个环境变量,如果变量在3小时内没有更新,dag就会出错。不知道我该怎么做,也不知道是否有特定的操作员可以帮助我完成这项任务。或者,非常感谢任何其他最佳实践建议

t2 = SSHOperator(
    ssh_conn_id='ec2_worker',
    task_id='execute_script',
    command='nohup python me_script.py &',
    dag=dag)

您可以让脚本在完成时将一个成功文件写入某个已知位置,然后让检查它。

IIUC,为什么不删除
nohup
并让python脚本运行呢?如果任务花费的时间太长,您可以向任务中添加
timeout
。无论出于何种原因,如果sshconnection断开连接,脚本也将停止。我希望能够允许脚本在这段时间内运行,这就是我使用nohupIf的原因。这是一项日常工作。您如何区分昨天运行与今天运行?我能想到的唯一一件事就是写一个成功文件,里面有日期。@codeBarer我会在文件名中加一个时间戳,然后使用
{{ds}
来构造传感器应该查找的文件名。