调用任何实用程序的包装器,并重试,直到成功为止

shell-retr的Python项目详细描述


travislandscapepypilicensepyversionscodeclimateissues

调用任何实用程序的包装器,并重试,直到成功为止

安装

pip install shell-retry

示例

让我们从--help

$ shell-retry --help
usage: shell-retry [-h][--backoff BACKOFF][--retry-count RETRY_COUNT][--interval INTERVAL][--verbose]
                   cmd [cmd ...]


positional arguments:
  cmd

optional arguments:
  -h, --help            show this help message and exit
  --backoff BACKOFF     backoff factor (sleep(--interval *= --backoff)
  --retry-count RETRY_COUNT
                        How many time re-run cmd if it fails
  --interval INTERVAL   Initial interval between retries
  --interval-max INTERVAL_MAX
                        upper limit for interval
  --interval-min INTERVAL_MIN
                        lower limit for interval
  --verbose             Be verbose, write how many retries left and how long
                        will we wait
  • 要调试某些内容,请使用--verbose标志。
  • --retry-count指定重试(不是try)计数。
  • --interval设置initial重试间隔,下次重试前间隔乘以backoff。
$ shell-retry --verbose --retry-count=5 --backoff=1.3 false2018-02-22 18:23:06,682 INFO: Namespace(backoff=1.3, cmd=['false'], interval=1, retry_count=5, verbose=True)2018-02-22 18:23:06,683 INFO: run ['false']2018-02-22 18:23:06,687 INFO: command returned 12018-02-22 18:23:06,687 INFO: waiting 1.000000 seconds, 5 retries left
2018-02-22 18:23:07,687 INFO: run ['false']2018-02-22 18:23:07,692 INFO: command returned 12018-02-22 18:23:07,692 INFO: waiting 1.300000 seconds, 4 retries left
2018-02-22 18:23:08,995 INFO: run ['false']2018-02-22 18:23:08,999 INFO: command returned 12018-02-22 18:23:08,999 INFO: waiting 1.690000 seconds, 3 retries left
2018-02-22 18:23:10,690 INFO: run ['false']2018-02-22 18:23:10,696 INFO: command returned 12018-02-22 18:23:10,697 INFO: waiting 2.197000 seconds, 2 retries left
2018-02-22 18:23:12,896 INFO: run ['false']2018-02-22 18:23:12,902 INFO: command returned 12018-02-22 18:23:12,903 INFO: waiting 2.856100 seconds, 1 retries left
2018-02-22 18:23:15,764 INFO: run ['false']2018-02-22 18:23:15,769 INFO: command returned 1

要在cmd中使用某些标志,请在cmd之前使用--

$ shell-retry --retry-count=5 --backoff=1.2 -- curl -m 1 --connect-time 1 http://10.30.33.32
curl: (28) Connection timed out after 1000 milliseconds
curl: (28) Connection timed out after 1004 milliseconds
curl: (28) Connection timed out after 1003 milliseconds
curl: (28) Connection timed out after 1002 milliseconds
curl: (28) Connection timed out after 1000 milliseconds
curl: (28) Connection timed out after 1000 milliseconds

要限制重试间隔,可以使用选项--interval-max--interval-min

$ shell-retry --verbose --retry-count=3 --backoff=1.2 --interval-max=1.2 -- curl -m 1 --connect-time 1 http://10.30.33.32
2018-02-22 19:21:59,170 INFO: Namespace(backoff=1.2, cmd=['curl', '-m', '1', '--connect-time', '1', 'http://10.30.33.32'], interval=1, interval_max=1.2, interval_min=None, retry_count=3, verbose=True)2018-02-22 19:21:59,170 INFO: run ['curl', '-m', '1', '--connect-time', '1', 'http://10.30.33.32']
curl: (28) Connection timed out after 1000 milliseconds
2018-02-22 19:22:00,184 INFO: command returned 282018-02-22 19:22:00,185 INFO: waiting 1.000000 seconds, 3 retries left
2018-02-22 19:22:01,187 INFO: run ['curl', '-m', '1', '--connect-time', '1', 'http://10.30.33.32']
curl: (28) Connection timed out after 1005 milliseconds
2018-02-22 19:22:02,209 INFO: command returned 282018-02-22 19:22:02,210 INFO: waiting 1.200000 seconds, 2 retries left
2018-02-22 19:22:03,414 INFO: run ['curl', '-m', '1', '--connect-time', '1', 'http://10.30.33.32']
curl: (28) Connection timed out after 1001 milliseconds
2018-02-22 19:22:04,432 INFO: command returned 282018-02-22 19:22:04,432 INFO: waiting 1.200000 seconds, 1 retries left
2018-02-22 19:22:05,638 INFO: run ['curl', '-m', '1', '--connect-time', '1', 'http://10.30.33.32']
curl: (28) Connection timed out after 1006 milliseconds
2018-02-22 19:22:06,662 INFO: command returned 28

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java Spring MVC 4.0 RequestMapping无值,基于methodname   java Samsung 10 plus不允许wifi p2p发现   春爪哇。伊奥。IOException:找不到文件   java JasperReport饼图示例   java我试图使用mockito注释来测试我的代码,但无法解决mockito异常   命令行界面Java:制作简单的交互式cli应用程序   java jdk1之间的区别是什么。7_9 9和jdk1。7_271   java重载一个被重写的、继承的方法   java LazyInitializationException春季启动   java Play Framework 2.2.1 3个表之间存在大量关系