Wait until a certain TCP port is available
Project description
python-wait4it
Wait-For-It Python module, that waits until a certain TCP port is available.
Based on the idea behind the well-known wait-for-it script, but created mainly as a Python package to be used on other Python applications, services or modules, instead of being mainly a CLI tool.
Installing
Package is available at PyPi, so you can install it with pip install wait4it -
or from sources with python setup.py install.
Usage
from wait4it import wait_for, WaitForTimeoutError
# This should return instantly (if you have connection)
wait_for(host="google.com", port=80)
# This should fail in 5 seconds
try:
wait_for(host="google.com", port=12345, timeout=5)
except TimeoutError:
# Actually will raise custom WaitForTimeoutError exception, but inherits from TimeoutError (except on Python2)
print("Failed! (as expected)")
# This should return False in 15 seconds
wait_for(host="google.com", port=12345, raise_error=False)
# Normally you will want to check for a port in localhost (e.g. a MySQL/MariaDB database).
# This can be done directly like:
wait_for(3306)
# The exceptions include the failing host/port
try:
wait_for(host="google.com", port=12345)
except WaitForTimeoutError as ex:
assert ex.host == "google.com"
assert ex.port == 12345
wait_for_pass decorator
It works similarly to wait_for, but if the considered exceptions are raised on the decorated function, it will re-run until it runs without raising these errors, or until the given retries limit is reached.
The following example will randomly raise ZeroDivisionError in the function divide_by_random, which runs 10 times.
If fails more than twice, the exception will be thrown outside the function.
from random import randint
from wait4it import wait_for_pass
@wait_for_pass(ZeroDivisionError, retries=2)
def divide_by_random(n=10):
d = randint(0, 1)
print("Gonna divide", n, "/", d)
return n / d
for _ in range(10):
r = divide_by_random()
print("Got result:", r)
If retries is set to 0, the function will run forever until it passes without raising exceptions.
wait_for_pass also allows a parameter retries_delay, which can be used to define a delay, in seconds, between failed function executions.
Dependencies & Compatibility
Not external dependencies are required. Compatible (tested with) Python 2.7, 3.4, 3.5, 3.6, 3.7, 3.8 - under Linux.
Changelog
- 0.2.1 - Add retries_delay parameter to wait_for_pass
- 0.1.2 - Fix wait_for_pass decorator not looping indefinitely when retries=0
- 0.1.1 - Add wait_for_pass decorator
- 0.0.1 - Initial release
TODO
- Set retries limit on wait_for
- Set timeout on wait_for_pass
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file wait4it-0.2.1.tar.gz.
File metadata
- Download URL: wait4it-0.2.1.tar.gz
- Upload date:
- Size: 4.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/46.2.0.post20200511 requests-toolbelt/0.9.1 tqdm/4.46.0 CPython/3.7.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0ffd87a4b09a42a95b31b9f0cbe7865848d31e689baf7f743b41ce4e8c72e269
|
|
| MD5 |
9ae09493cd25457c42018f770ba46aed
|
|
| BLAKE2b-256 |
034c4f10a18c50f0b7772b5502be0b09d187efda081d9b83d660b8f2a77d25c6
|
File details
Details for the file wait4it-0.2.1-py3-none-any.whl.
File metadata
- Download URL: wait4it-0.2.1-py3-none-any.whl
- Upload date:
- Size: 4.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/46.2.0.post20200511 requests-toolbelt/0.9.1 tqdm/4.46.0 CPython/3.7.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
515567dbf81e62af4579078824a7da32cf9b549bebb546052830d45fe963038c
|
|
| MD5 |
8ed9dfc2f36ae85012998622a14eecd9
|
|
| BLAKE2b-256 |
00f7bf19111f350693d250b6478da5d4e1a00edef008402395a9fc7fd7dd26fa
|