aioping

Asyncio ping implementation


Keywords
network, icmp, ping, asyncio
License
GPL-3.0
Install
pip install aioping==0.3.1

Documentation

aioping is a fast asyncio implementation of ICMP (ping) protocol.

Installation

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

Using aioping

There are 2 ways to use the library.

First one is interactive, which sends results to standard Python logger:

import asyncio
import aioping
import logging

logging.basicConfig(level=logging.INFO)     # or logging.DEBUG
asyncio.run(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")

asyncio.run(do_ping("google.com"))

Methods

ping(dest_addr, timeout=10, family=None)

  • dest_addr - destination address, IPv4, IPv6 or hostname
  • timeout - timeout in seconds (default: 10)
  • family - family of resolved address - socket.AddressFamily.AF_INET for IPv4, socket.AddressFamily.AF_INET6 for IPv6 or None if it doesn't matter (default: None)

verbose_ping(dest_addr, timeout=2, count=3, family=None)

  • dest_addr - destination address, IPv4, IPv6 or hostname
  • timeout - 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 or None if it doesn't matter (default: None)

Credits

License

aioping is licensed under GPLv2.