我一直在试图找出当fabric脚本失败时做某些事情的最佳方法(例如,通过python模块slackbot
发送一个slack通知消息)。在
我举了一个例子,我试着在这里做上面的事情:
fab_failtest.pymy_slackclient.py
您可以通过将这两个文件下载到一个目录pip installfabric
和{
fab --fabfile=fab_failtest.py fail_test1
或者
fab --fabfile=fab_failtest.py fail_test2
(您还必须有一台可以ssh到的机器,在本例中,mrbluesky@elo
在22
上打开ssh端口)
fail_test1
使用try-except
这样我就可以得到异常错误信息等等fail_test2
使用try-finally
加上一个简单的布尔变量,因此没有可用的异常信息一开始我以为我对fail_test1
的例子很满意,但是我已经看到它在失败时发送slack消息失败了好几次,我想知道是否有竞争条件或涉及到什么?我可以开始使用fail_test2
,但我真的喜欢像fail_test1
那样访问堆栈跟踪。在
有没有更好的方法来做到这一点,比如说,python fabric中提供的一些东西完全可以实现我在上面的示例中所要完成的任务?在
我不同意你的两种方法。我坚信代码越少越好。我这是什么意思?一个函数应该按照它的名字来做,不多不少,如果你必须像那样添加一个全局处理程序,我会把它作为包装器添加进去,fabric函数很难读懂,不需要在混合中添加错误处理。上面说:
输出:
^{pr2}$以及:
^{3}$你会注意到这些函数现在“很容易”阅读,它们很“简单”,所有的错误处理代码都被移到了其他地方。在
我有一个类似的问题,我想在脚本失败时发送通知。因此,我决定构建一个包Notif,以便在脚本失败时使用修饰符发送通知。在
下面是我的包notif的示例,用于在脚本失败时发送延迟通知:
请看这里的doc。在
相关问题 更多 >
编程相关推荐