Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/ionelmc/python-holdup
A tool to wait for services and execute command. Useful in Docker containers.
https://github.com/ionelmc/python-holdup
docker dockerize healthcheck holdup http python tcp wait-for-it
Last synced: 5 days ago
JSON representation
A tool to wait for services and execute command. Useful in Docker containers.
- Host: GitHub
- URL: https://github.com/ionelmc/python-holdup
- Owner: ionelmc
- License: bsd-2-clause
- Created: 2016-04-21T19:45:27.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2024-05-22T00:25:22.000Z (6 months ago)
- Last Synced: 2024-10-14T14:47:20.863Z (about 1 month ago)
- Topics: docker, dockerize, healthcheck, holdup, http, python, tcp, wait-for-it
- Language: Python
- Homepage:
- Size: 266 KB
- Stars: 33
- Watchers: 3
- Forks: 3
- Open Issues: 2
-
Metadata Files:
- Readme: README.rst
- Changelog: CHANGELOG.rst
- Contributing: CONTRIBUTING.rst
- License: LICENSE
- Authors: AUTHORS.rst
Awesome Lists containing this project
README
========
Overview
========.. start-badges
.. list-table::
:stub-columns: 1* - docs
- |docs|
* - tests
- |github-actions| |coveralls|
* - package
- |version| |wheel| |supported-versions| |supported-implementations| |commits-since|
.. |docs| image:: https://readthedocs.org/projects/python-holdup/badge/?style=flat
:target: https://readthedocs.org/projects/python-holdup/
:alt: Documentation Status.. |github-actions| image:: https://github.com/ionelmc/python-holdup/actions/workflows/github-actions.yml/badge.svg
:alt: GitHub Actions Build Status
:target: https://github.com/ionelmc/python-holdup/actions.. |coveralls| image:: https://coveralls.io/repos/github/ionelmc/python-holdup/badge.svg?branch=master
:alt: Coverage Status
:target: https://coveralls.io/github/ionelmc/python-holdup?branch=master.. |version| image:: https://img.shields.io/pypi/v/holdup.svg
:alt: PyPI Package latest release
:target: https://pypi.org/project/holdup.. |wheel| image:: https://img.shields.io/pypi/wheel/holdup.svg
:alt: PyPI Wheel
:target: https://pypi.org/project/holdup.. |supported-versions| image:: https://img.shields.io/pypi/pyversions/holdup.svg
:alt: Supported versions
:target: https://pypi.org/project/holdup.. |supported-implementations| image:: https://img.shields.io/pypi/implementation/holdup.svg
:alt: Supported implementations
:target: https://pypi.org/project/holdup.. |commits-since| image:: https://img.shields.io/github/commits-since/ionelmc/python-holdup/v5.1.1.svg
:alt: Commits since latest release
:target: https://github.com/ionelmc/python-holdup/compare/v5.1.1...master.. end-badges
A tool to wait for services and execute command. Useful for Docker containers that depend on slow to start services
(like almost everything).* Free software: BSD 2-Clause License
Installation
============Currently holdup is only published to PyPI and `hub.docker.com `_.
To install from PyPI::
pip install holdup
It has no dependencies except the optional PostgreSQL check support, which you'd install with::
pip install 'holdup[pg]'
You can also install the in-development version with::
pip install https://github.com/ionelmc/python-holdup/archive/master.zip
Alternate installation (Docker image)
-------------------------------------Example::
docker run --rm ionelmc/holdup tcp://foobar:1234
Note that this will have some limitations:
* executing the ``command`` is pretty pointless because holdup will run in its own container
* you'll probably need extra network configuration to be able to access services
* you won't be able to use `docker run` inside a container without exposing a docker daemon in said containerUsage
=====usage: holdup [-h] [-t SECONDS] [-T SECONDS] [-i SECONDS] [-n] service [service ...] [-- command [arg [arg ...]]]
Wait for services to be ready and optionally exec command.
positional arguments:
service
A service to wait for. Supported protocols: "tcp://host:port/", "path:///path/to/something", "unix:///path/to/domain.sock", "eval://expr", "pg://user:password@host:port/dbname" ("postgres" and "postgresql" also allowed), "http://urn", "https://urn", "https+insecure://urn" (status 200 expected for http*). Join protocols with a comma to make holdup exit at the first passing one, eg: "tcp://host:1,host:2" or "tcp://host:1,tcp://host:2" are equivalent and mean `any that pass`.
command
An optional command to exec.optional arguments:
-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
-v, --verbose Verbose mode.
--verbose-passwords Disable PostgreSQL/HTTP password masking.
-n, --no-abort Ignore failed services. This makes `holdup` return 0 exit code regardless of services actually responding.
--insecure Disable SSL Certificate verification for HTTPS services.
--version display the version of the holdup package and its location, then exit.Example::
holdup tcp://foobar:1234 -- django-admin ...
Documentation
=============https://python-holdup.readthedocs.io/
Development
===========To run all the tests run::
tox
Note, to combine the coverage data from all the tox environments run:
.. list-table::
:widths: 10 90
:stub-columns: 1- - Windows
- ::set PYTEST_ADDOPTS=--cov-append
tox- - Other
- ::PYTEST_ADDOPTS=--cov-append tox