等待服务并执行命令的工具。对于依赖于慢启动服务的Docker容器很有用(就像几乎所有的服务一样)。
holdup的Python项目详细描述
等待服务并执行命令的工具。对于依赖慢速启动服务的Docker容器很有用 (就像几乎所有的事情一样)。
- 自由软件:BSD 2条款许可证
安装
pip install holdup
文件
用法:holdup [-h][-t SECONDS] [-T SECONDS] [-i SECONDS] [-n][--insecure] service [service ...][-- command [arg [arg ...]]]
等待服务准备就绪并可选地执行命令。
- 位置参数:
- service
- 等待的服务。支持的协议: “tcp://host:port/”,“路径:///path/to/something”, “unix:///path/to/domain.sock”,“eval://expr”, “http://urn”、“http://urn”、“https+unsecure//urn”(应为状态200)。加入 具有逗号的协议在 首先传递一个,例如:tcp://host:1,host:2或 tcp://host:1,tcp://host:2是等价的,表示“any” 通过“
- command
- 执行的可选命令。
- 可选参数:
-h, --help show this help message and exit -t SECONDS, --timeout SECONDS Time to wait for services to be ready. Default: 60.0 -T SECONDS, --check-timeout SECONDS Time to wait for a single check. Default: 1.0 -i SECONDS, --interval SECONDS How often to check. Default: 0.2 -n, --no-abort Ignore failed services. This makes holdup return 0 exit code regardless of services actually responding. --insecure Skip SSL Certificate verification for HTTPS services.
建议使用
假设您总是希望容器等待,请将其添加到您的Dockerfile:
COPY entrypoint.sh / ENTRYPOINT ["/entrypoint.sh"] CMD ["/bin/bash"]
然后在entrypoint.sh中,您可以拥有:
#!/bin/sh set -eux urlstrip() { string=${@##*://}; echo ${string%%[\?/]*}; } exec holdup \ "tcp://$DJANGO_DATABASE_HOST:$DJANGO_DATABASE_PORT" \ "tcp://$(urlstrip $CELERY_RESULT_BACKEND)" \ -- "$@"
唯一的缺点是,有时可能需要使用docker run --entrypoint=''来避免运行延迟。没什么大不了的。
不安全的https服务检查
您可以选择在等待https服务时跳过ssl验证(例如,在使用ip地址时)。可以使用以下任一方法完成此操作:
# Specifying a https+insecure protocol holdup https+insecure://10.1.2.3/ # Specifying the --insecure` option holdup --insecure https://10.1.2.3/
跳过SSL证书验证至少需要Python-2.7.9或Python-3.4.3
开发
要运行所有测试,请运行:
tox
注意,要合并来自所有tox环境的覆盖率数据,请运行:
Windows | ^{pr 6}$ |
---|---|
Other | ^{pr 7}$ |
更改日志
1.8.0(2019-05-28)
- 添加了PostgreSQL检查它处理the database system is starting up问题。 丹·艾琳在#6中的贡献。
- 更改了输出,使其更清晰、更简短:
- 参数(检查)在打印时被引用,
- “任何”支票都会提供有关是什么使它通过的确切信息,
- 删除重复信息。
- 简化了“anycheck”的内部结构。
1.7.0(2018-11-24)
- 添加了对跳过HTTPS服务的SSL证书验证的支持 (选项--insecure和https+insecure协议)。 由Mithun Ayachit在#2中提供。
1.6.0(2018-03-22)
- 添加了详细模式(-v或--verbose)。
- 将默认超时更改为60s(从5s)。
1.5.0(2017-06-07)
- 为奇怪的用户定义检查添加了eval://expression协议。
1.4.0(2017-03-27)
- 增加了对HTTP(S)检查的支持
1.3.0(2017-02-21)
- 添加对“any”服务检查的支持(带有逗号的服务语法)。
1.2.1(2016-06-17)
- 处理内部操作需要超过计划的情况。
1.2.0(2016-05-25)
- 添加了文件检查。
1.1.0(2016-05-06)
- 已删除调试打印。
- 添加了--interval选项以了解检查频率。不再有旋转圈
1.0.0(2016-04-22)
- 改进测试。
- 总是登录到stderr。
0.1.0(2016-04-21)
- pypi上的第一个版本。