Skip to main content

Wait until TCP endpoints are open

Project description

tcpw

tcpw (TCP Wait) is a tool that waits until TCP endpoints are open.

It is useful for synchronizing the spin-up of interdependent services, such as linked docker containers.

That is yet another alternative to wait-for-it.sh.

Rationale

  • available as a binary executable without any dependencies (file size <1mb).
  • available on PyPI
  • additionally, you can set:
    • more than one endpoint: -a google.com:80 -a booble.gum:8080 ...
    • command, which can be executed only after success, failure or any result: -on f -a google.com:9999 echo "Endpoint is down"
    • polling interval: -i 500ms
    • timeout/interval in different time units: ns,ms,s,m,h

Installation

Download executable file:

sh -c "wget -O tcpw https://raw.githubusercontent.com/jackcvr/tcpw/main/$(uname -m)/tcpw/tcpw && chmod +x tcpw"

or:

  • x86_64: pip install tcpw
  • aarch64: pip install tcpw[arm64]
  • armv7l: pip install tcpw[armv7l]

PyPI - Version PyPI - Python Version

Usage

Usage: tcpw [-t timeout] [-i interval] [-on (s|f|any)] [-q] [-v] [-a host:port ...] [command [args]]

  -a value
    	Endpoint to await, in the form 'host:port'
  -i duration
    	Interval between retries in format N{ns,ms,s,m,h} (default 1s)
  -on string
    	Condition for command execution. Possible values: 's' - after success, 'f' - after failure, 'any' - always (default "s")
  -q	Do not print anything (default false)
  -t duration
    	Timeout in format N{ns,ms,s,m,h}, e.g. '5s' == 5 seconds. Zero for no timeout (default 0)
  -v	Verbose mode (default false)
  command args
    	Execute command with arguments after the test finishes (default: if connection succeeded)

Examples

Wait 5 seconds for port 80 on www.google.com, and if it is available, echo the message Google is up:

$ tcpw -t 5s -a www.google.com:80 echo "Google is up"
2024/08/26 20:06:47.209012 successfully connected to www.google.com:80
Google is up

Next command waits 2 seconds for www.google.com:80 and localhost:5000, checking them every 500 milliseconds with enabled verbose mode and executes echo regardless of the result:

$ tcpw -t 2s -i 500ms -v -on any -a www.google.com:80 -a localhost:5000 echo "Printed anyway"
2024/08/26 20:08:24.153240 connecting to localhost:5000...
2024/08/26 20:08:24.153327 connecting to www.google.com:80...
2024/08/26 20:08:24.153541 dial tcp 127.0.0.1:5000: connect: connection refused
2024/08/26 20:08:24.179927 successfully connected to www.google.com:80
2024/08/26 20:08:24.654984 dial tcp 127.0.0.1:5000: connect: connection refused
2024/08/26 20:08:25.155997 dial tcp 127.0.0.1:5000: connect: connection refused
2024/08/26 20:08:25.661397 dial tcp 127.0.0.1:5000: connect: connection refused
2024/08/26 20:08:26.161613 dial tcp: lookup localhost: i/o timeout
timeout error
Printed anyway

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

tcpw-0.1.8.tar.gz (896.0 kB view details)

Uploaded Source

Built Distribution

tcpw-0.1.8-py3-none-any.whl (893.3 kB view details)

Uploaded Python 3

File details

Details for the file tcpw-0.1.8.tar.gz.

File metadata

  • Download URL: tcpw-0.1.8.tar.gz
  • Upload date:
  • Size: 896.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.5

File hashes

Hashes for tcpw-0.1.8.tar.gz
Algorithm Hash digest
SHA256 6bc3211ad93ecdda576c3ec4f7f6742cd6281381a6a3a949ef4c925c7652f2a0
MD5 91015808ead5ee140a5efaab14b5d5f7
BLAKE2b-256 40d4ef185e5596784ad9f07645b8c170d691d852ad4880f5a725856ab13a0cb6

See more details on using hashes here.

File details

Details for the file tcpw-0.1.8-py3-none-any.whl.

File metadata

  • Download URL: tcpw-0.1.8-py3-none-any.whl
  • Upload date:
  • Size: 893.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.5

File hashes

Hashes for tcpw-0.1.8-py3-none-any.whl
Algorithm Hash digest
SHA256 2f69b51768d81fbe7b8b2a751487e12ebf6f6ebf7823c067a073e611ae7d7ef6
MD5 46bbaf5a83a0ea6dd7271bbc5fc50db6
BLAKE2b-256 00f5592868166d3ac3ed78a1b2e65c53bae3ee0cbfefd2ce17fe202fb4242c01

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page