如果Shell脚本执行失败,如何实现重试机制?

用户名

我正在尝试在Python代码中执行Shell脚本。到目前为止,一切都看起来不错。

下面是我的Python脚本,它将执行一个shell脚本。现在来看一个示例,这是一个简单的Hello World Shell脚本。

jsonStr = '{"script":"#!/bin/bash\\necho Hello world 1\\n"}'
j = json.loads(jsonStr)

shell_script = j['script']

print "start"
proc = subprocess.Popen(shell_script, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
(stdout, stderr) = proc.communicate()
if stderr:
   print "Shell script gave some error"
   print stderr
else:
   print stdout
   print "end" # Shell script ran fine.

现在,我正在寻找的是,假设无论什么原因,无论何时我从Python代码执行我的shell脚本时,无论出于何种原因它都失败了。那就意味着stderr不会是空的。因此,现在我想再次尝试执行shell脚本,比如说睡了几毫秒之后?

这意味着如果Shell脚本执行失败,是否有可能实现重试机制?我可以重试5到6次吗?意味着也可以配置该号码吗?

菜刀21
from time import sleep
MAX_TRIES = 6

# ... your other code ...

for i in xrange(MAX_TRIES):
    proc = subprocess.Popen(shell_script, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
    (stdout, stderr) = proc.communicate()
    if stderr:
       print "Shell script gave some error..."
       print stderr
       sleep(0.05) # delay for 50 ms
    else:
       print stdout
       print "end" # Shell script ran fine.
       break

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如果Shell脚本执行失败,如何实现重试机制?

来自分类Dev

Azure存储队列-重试机制实现

来自分类Dev

如何使用vm事务实现ftp出站端点的重试机制?

来自分类Dev

CloudQueueMessage-重试机制

来自分类Dev

Activiti 工作流重试机制如何工作

来自分类Dev

收到gsm调制解调器后,如何实现重试机制异常:没有从电话接收到数据?

来自分类Dev

Web服务调用的重试机制

来自分类Dev

Android SyncAdapter中的重试机制

来自分类Dev

使用 JSch 库上传重试机制

来自分类Dev

如果curl失败,如何停止shell脚本

来自分类Dev

Shell 脚本执行失败

来自分类Dev

如果搜索失败,则使用sed执行shell脚本

来自分类Dev

在Apache Storm上为螺栓添加重试机制

来自分类Dev

PHP中的自动mongoDB查询重试机制

来自分类Dev

在Apache Storm上为螺栓添加重试机制

来自分类Dev

使用 Retrofit 时重试机制的最佳实践是什么?

来自分类Dev

如果MEncoder和Youtube上载脚本失败,则重试

来自分类Dev

如何执行shell脚本?

来自分类Dev

如何执行shell脚本?

来自分类Dev

批处理执行失败后,如何重试未执行的语句?

来自分类Dev

批处理执行失败后,如何重试未执行的语句?

来自分类Dev

Cassandra驱动程序是否具有自己的推测性重试机制?

来自分类Dev

带有JMS和spring的ActiveMQ生产者客户端的重试机制

来自分类Dev

Shell 脚本,如果失败则停止运行

来自分类Dev

Jenkins因执行shell脚本而失败

来自分类Dev

如果尝试失败,如何使scp重试直到成功?

来自分类Dev

如何从Hubot执行Shell脚本

来自分类Dev

如何从PHP脚本执行Shell

来自分类Dev

如果失败,请重试SFTP?

Related 相关文章

热门标签

归档