Reachability
Reachability is a Python 3 package which allows you to monitor and observe online reachability, and react to these status changes as necessary.
This is done by periodically pinging the Cloudflare DNS IP (1.1.1.1). Reachability is customisable, so you can change the interval and host to ping as necessary.
Installation
You can install Reachability from PyPI
pip install reachability
How to use
To start with, we can easily check the current status from an instance of the reachability class:
from reachability import Reachability
reachability = Reachability()
print(reachability.isonline())
The above show True if connected to the internet, or False if not.
To set up Reachability, instead you can use:
reachability = Reachability(host='8.8.4.4', port=53, timeout=3, status_check_interval=4)
The above will instead ping 8.8.4.4 (Google's DNS Service), on port 53 with a timeout of 3 seconds. status_check_interval is used in more advanced use cases to monitor any status changes as shown below.
Observing changes
Functions and Lambdas
reachability.attach_func(lambda x: print(x))
reachability.start_notify()
This will print True or False on each status change. If for example, we are initially connected to the internet, True will be printed. If the Internet connection is then interrupted, the lambda will be executed again this time printing False.
This will continue until
reachability.stop_notify()
is called. Note however that the lambda will still be attached. To detach it, we must call
reachability.detach_func(x)
where x is a reference to the lambda or function.
Obviously, you can also use something like
def f(isonline):
if isonline:
print("FunctionA: We are online")
else:
print("FunctionA: We are offline")
reachability.attach_func(f)
Observers
Another option is to use an Observer Class as demonstrated below:
from reachability import ReachabilityObserver, Reachability
class ObserverA(ReachabilityObserver):
def reachability_update(self, isonline: bool) -> None:
if isonline:
print("ObserverA: We are online")
else:
print("ObserverA: We are offline")
reachability = Reachability()
observer_a = ObserverA()
reachability.attach(observer_a)
reachability.start_notify()
ReachabiltyObserver is a simple interface. Classes which use it will implement
def reachability_update(self, is_online: bool) -> None
This method will then be called on Online Reachability changes.
You can have multiple observers attached to a reachability instance. To detach them, simply call
reachability.detach(observer_a) #Detach ObserverA
reachability.stop_notify() #Stop any further notifications
Metadata
Release files for reachability 0.1.4
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| reachability-0.1.4.tar.gz | 3.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| reachability-0.1.4-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 9.2 kB
Release files / reachability-0.1.4.tar.gz
| Download URL | reachability-0.1.4.tar.gz |
|---|---|
| Size | 3.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
61f7f0fff39da809730e48c073ec091e5d590c827f559383e713f1f8764e666c
|
|
BLAKE2b-256 checksum How to use checksums |
8446408b5cac1b1b56b04d85289ee3f541abbf437ed75dbd7a2c36e4a2747368
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/50.3.1 requests-toolbelt/0.9.1 tqdm/4.50.2 CPython/3.8.5
|
Release files / reachability-0.1.4-py3-none-any.whl
| Download URL | reachability-0.1.4-py3-none-any.whl |
|---|---|
| Size | 5.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
a537190faa360974a9e07cd874f4a9419f056aaf49c6dac27c5037041783424a
|
|
BLAKE2b-256 checksum How to use checksums |
7039b2e32a140f0910e2e34c3b71f083bc2d046253d6203da64b2b74ce23d0d5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/50.3.1 requests-toolbelt/0.9.1 tqdm/4.50.2 CPython/3.8.5
|