我正在使用Slurm作业调度程序在集群上运行我的作业。使用Apache Airflow提交Slurm作业并检查其状态的最有效方法是什么?
我能够使用SSHOperator远程提交我的作业并每分钟检查其状态,直到完成,但我想知道是否有更好的方法。以下是我编写的SSHOperator。
我能够使用SSHOperator远程提交我的作业并每分钟检查其状态,直到完成,但我想知道是否有更好的方法。以下是我编写的SSHOperator。
sshHook = SSHHook(ssh_conn_id='my_conn_id',keepalive_interval=240)
task_ssh_bash = """
cd ~/projects &&
JID=$(sbatch myjob.sh)
echo $JID
sleep 10s # needed
ST="PENDING"
while [ "$ST" != "COMPLETED" ] ; do
ST=$(sacct -j ${JID##* } -o State | awk 'FNR == 3 {print $1}')
sleep 1m
if [ "$ST" == "FAILED" ]; then
echo 'Job final status:' $ST, exiting...
exit 122
fi
echo $ST
"""
task_ssh = SSHOperator(
task_id='test_ssh_operator',
ssh_hook=sshHook,
do_xcom_push=True,
command=task_ssh_bash,
dag=dag)