Skip to main content

Python interface for c-ares

Project description

pycares is a Python module which provides an interface to c-ares. c-ares is a C library that performs DNS requests and name resolutions asynchronously.


pycares 3.0.0 beta can be installed as follows:

pip install pycares --pre

Note that no binary wheels are provided until a stable release is made.

This new release swaps the C core for the CFFI one, amongst other things. Please give it a try and report any issues!

Bundled c-ares

pycares currently bundles c-ares and as of pycares 1.0.0 this is a strong requirement. Upstream c-ares is not willing to apply a patch adding TTL support. I did apply the patch to the bundled c-ares, but unfortunately it breaks the ABI, so attempting to use a system provided c-ares is not possible.



python install


cd /usr/ports/dns/py-pycares && make install


(XCode needs to be installed)
python install

Microsoft Windows (with Visual Studio 2015 or the Windows SDK):

python install

Running the test suite

There are several ways of running the test ruite:

  • Run the test with the current Python interpreter:

    From the toplevel directory, run: python tests/

  • Use Tox to run the test suite in several virtualenvs with several interpreters

    From the toplevel directory, run: tox -e py35,py36,py37 this will run the test suite on Python 3.5, 3.6 and 3.7 (you’ll need to have them installed beforehand)

Using it from the cli, a la dig

This module can be used directly from the command line in a similar fashion to dig (limited, of course):

$ python -m pycares
;                  IN      A

;; ANSWER SECTION:           300     IN      A

$ python -m pycares mx
;                  IN      MX

;; ANSWER SECTION:           600     IN      MX      50           600     IN      MX      10           600     IN      MX      40           600     IN      MX      20           600     IN      MX      30


Saúl Ibarra Corretgé <>


Unless stated otherwise on-file pycares uses the MIT license, check LICENSE file.

Supported Python versions

Python >= 3.5 are supported. Both CPython and PyPy are supported.


If you’d like to contribute, fork the project, make a patch and send a pull request. Have a look at the surrounding code and please, make yours look alike :-)

Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for pycares, version 3.0.0b0
Filename, size File type Python version Upload date Hashes
Filename, size pycares-3.0.0b0.tar.gz (210.1 kB) File type Source Python version None Upload date Hashes View

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page