aioping is a fast asyncio implementation of ICMP (ping) protocol.
aioping requires Python 3.5.
Use pip to install it from the PyPI:
$ pip install aioping
Or use the latest version from the master (if you are brave enough):
$ pip install git+https://github.com/stellarbit/aioping
There are 2 ways to use the library.
First one is interactive, which sends results to standard Python logger. Please make sure you are running this code under root, as only root is allowed to send ICMP packets:
import asyncio
import aioping
import logging
logging.basicConfig(level=logging.INFO) # or logging.DEBUG
loop = asyncio.get_event_loop()
loop.run_until_complete(aioping.verbose_ping("google.com"))
Alternatively, you can call a ping function, which returns a ping delay in milliseconds or throws an exception in case of error:
import asyncio
import aioping
async def do_ping(host):
try:
delay = await aioping.ping(host) * 1000
print("Ping response in %s ms" % delay)
except TimeoutError:
print("Timed out")
loop = asyncio.get_event_loop()
loop.run_until_complete(do_ping("google.com"))
ping(dest_addr, timeout=10, family=None)
dest_addr
- destination address, IPv4, IPv6 or hostnametimeout
- timeout in seconds (default:10
)family
- family of resolved address -socket.AddressFamily.AF_INET
for IPv4,socket.AddressFamily.AF_INET6
for IPv6 orNone
if it doesn't matter (default:None
)
verbose_ping(dest_addr, timeout=2, count=3, family=None)
dest_addr
- destination address, IPv4, IPv6 or hostnametimeout
- timeout in seconds (default:2
)count
- count of packets to send (default:3
)family
- family of resolved address -socket.AddressFamily.AF_INET
for IPv4,socket.AddressFamily.AF_INET6
for IPv6 orNone
if it doesn't matter (default:None
)
- Original Version from Matthew Dixon Cowles: ftp://ftp.visi.com/users/mdc/ping.py
- Rewrite by Jens Diemer: http://www.python-forum.de/post-69122.html#69122
- Rewrite by Samuel Stauffer: https://github.com/samuel/python-ping
- Rewrite by Anton Belousov / Stellarbit LLC <anton@stellarbit.com> http://github.com/stellarbit/aioping
- Generous contributions from GitHub users:
aioping is licensed under GPLv2.