Welcome to portend documentation!¶
A simple library for managing the availability of ports.
-
class
portend.Checker(timeout=1.0)¶ Bases:
object-
assert_free(host, port=None)¶ Assert that the given addr is free in that all attempts to connect fail within the timeout or raise a PortNotFree exception.
>>> free_port = find_available_local_port()
>>> Checker().assert_free('localhost', free_port) >>> Checker().assert_free('127.0.0.1', free_port) >>> Checker().assert_free('::1', free_port)
Also accepts an addr tuple
>>> addr = '::1', free_port, 0, 0 >>> Checker().assert_free(addr)
Host might refer to a server bind address like ‘::’, which should use localhost to perform the check.
>>> Checker().assert_free('::', free_port)
-
-
class
portend.HostPort¶ Bases:
strA simple representation of a host/port pair as a string
>>> hp = HostPort('localhost:32768')
>>> hp.host 'localhost'
>>> hp.port 32768
>>> len(hp) 15
>>> hp = HostPort('[::1]:32768')
>>> hp.host '::1'
>>> hp.port 32768
-
classmethod
from_addr(addr)¶
-
property
host¶
-
property
port¶
-
classmethod
-
exception
portend.PortNotFree¶ Bases:
OSError
-
exception
portend.Timeout¶ Bases:
OSError
-
portend.client_host(server_host)¶ Return the host on which a client can connect to the given listener.
>>> client_host('192.168.0.1') '192.168.0.1' >>> client_host('0.0.0.0') '127.0.0.1' >>> client_host('::') '::1'
-
portend.find_available_local_port()¶ Find a free port on localhost.
>>> 0 < find_available_local_port() < 65536 True
-
portend.free(host, port, timeout=inf)¶ Wait for the specified port to become free (dropping or rejecting requests). Return when the port is free or raise a Timeout if timeout has elapsed.
Timeout may be specified in seconds or as a timedelta. If timeout is None or ∞, the routine will run indefinitely.
>>> free('localhost', find_available_local_port())
>>> free(None, None) Traceback (most recent call last): ... ValueError: Host values of '' or None are not allowed.
-
portend.occupied(host, port, timeout=inf)¶ Wait for the specified port to become occupied (accepting requests). Return when the port is occupied or raise a Timeout if timeout has elapsed.
Timeout may be specified in seconds or as a timedelta. If timeout is None or ∞, the routine will run indefinitely.
>>> occupied('localhost', find_available_local_port(), .1) Traceback (most recent call last): ... Timeout: Port ... not bound on localhost.
>>> occupied(None, None) Traceback (most recent call last): ... ValueError: Host values of '' or None are not allowed.
-
portend.wait_for_free_port(host, port, timeout=inf)¶ Wait for the specified port to become free (dropping or rejecting requests). Return when the port is free or raise a Timeout if timeout has elapsed.
Timeout may be specified in seconds or as a timedelta. If timeout is None or ∞, the routine will run indefinitely.
>>> free('localhost', find_available_local_port())
>>> free(None, None) Traceback (most recent call last): ... ValueError: Host values of '' or None are not allowed.
-
portend.wait_for_occupied_port(host, port, timeout=inf)¶ Wait for the specified port to become occupied (accepting requests). Return when the port is occupied or raise a Timeout if timeout has elapsed.
Timeout may be specified in seconds or as a timedelta. If timeout is None or ∞, the routine will run indefinitely.
>>> occupied('localhost', find_available_local_port(), .1) Traceback (most recent call last): ... Timeout: Port ... not bound on localhost.
>>> occupied(None, None) Traceback (most recent call last): ... ValueError: Host values of '' or None are not allowed.