python - NiFi:如果失败,则以有限的尝试运行 ExecuteStreamCommand 处理器
问题描述
我在 NiFi 中有一个如下所示的处理器:
基本上,ExecuteStreamCommand
将运行一个 Python 脚本来执行一些过程,然后流文件将去RouteOnAttribute
检查以前的 Python 脚本是成功还是失败。如果成功,它将转到下一个处理器(我未在此图中显示)。但如果失败,流文件将转到另一个ExecuteStreamCommand
处理器发送警报通知(通过电子邮件、聊天等)。然后它将重新运行第一个ExecuteStreamCommand
,直到脚本运行没有错误。
我的问题是,如果 python 脚本出现错误,它会一直发出警报,直到我暂停处理器。那么,是否有任何其他处理器或设置要添加到此流程中,以便在出现错误的情况下,它将重新运行 Python 脚本一次有限的尝试(此管道设置为每小时运行一次,因此它的数量autoretry 应该为每个流文件单独计算)。或者我是否必须为此目的在 python 脚本中添加任何代码?
TL;DR 我正在寻找一个要添加到我的管道中的 NiFi 处理器,它可以帮助我计算同一流文件通过处理器的时间,以限制自动重试 python 运行脚本
解决方案
有几种方法可以实现它。
- 您可以在属性上添加路由并跟踪此属性上的重连数。
- 在脚本中处理它
- 使用惩罚功能:https ://community.hortonworks.com/questions/56167/is-there-wait-processor-in-nifi.html