气流装卸机操作人员在连接模式下拆卸或启动集装箱



我有气流在容器中运行。

我使用Docker操作符来创建一些运行脚本的容器。

容器的名称是动态创建的,带有一些参数,如果我通过终端列出容器来查看正在发生的事情,这对我来说是有意义的。

例如,容器名称为my_script_daily_A

如果脚本运行成功,容器将被自动移除。

我有重试,以防任务失败。有一个问题,如果脚本失败,气流重新运行:

在脚本失败的情况下,容器仍然以退出状态存在,它不会被删除。这使得它的名称已经被分配,因此当气流再次运行任务时,它会抛出一个错误& &;具有此名称的容器已经存在& &;

为了解决这个问题,我创建了一个每分钟在主机上运行一次的脚本:
for i in $(docker ps -aq --filter status=exited); do
echo 'Removing '; docker rm $i done

我不是很高兴这样,我宁愿触发这个脚本只有当有一个失败,甚至更好,如果我能检测到失败是否是由于名称冲突。

我知道你可以用"on_failure_callback"属性。

但是,如果我直接在主机上运行气流,而不是在容器上运行气流,则运行我的脚本以删除退出的容器将不起作用。

有什么建议吗?

这个问题已经在Docker Provider 1.0.1中修复了:

https://airflow.apache.org/docs/apache-airflow-providers-docker/stable/index.html id9

当auto_remove设置为true时,容器错误,它确实没有被移除。

只要升级到最新的Docker Provider,问题就会解决。

最新更新