等待服务并执行命令的工具。对于依赖于慢启动服务的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, --helpshow 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-abortIgnore failed services. This makes holdup return 0 exit code regardless of services actually responding.
--insecureSkip 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证书验证的支持 (选项--insecurehttps+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上的第一个版本。

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

推荐PyPI第三方库


热门话题
java使用Jackson解析非同构JSON对象数组   java为什么'Stream<T>::<A>toArray(IntFunction<A[]>)`接受没有绑定的类型参数A?   java在JavaFX2.0中获取给定布局中的节点大小?   java双链接列表创建节点   java使用HashMap添加、删除和查找   java中push_back(C++)的等效方法是什么?   java在Jetty中运行servlet时获得HTTP 500   用java显示包含图像和文本的页面的最简单文档格式   swing从选项卡窗格Java中的不同选项卡访问数据   字符串Java帮助检查登录类使用。CSV文件   java Struts 1.2.9动作链接   包含max元素的java列表   currentNode上的jcr Java空检查   在Android中使用OpenNLP的POSTaggerMe时出现java NullPointerException   java Logback只将消息记录到syslog一次   如何用Java编写构造函数的API文档   java从gallery中获取所有图像并存储在阵列中   java Maven:将外部jar文件夹添加到类路径