The Python Dugong Module
The Python Dugong module provides an API for communicating with HTTP
1.1 servers. It is an alternative to the standard library's
http.client (formerly httplib) module. In contrast to
- allows you to send multiple requests right after each other without having to read the responses first.
- supports waiting for 100-continue before sending the request body.
- raises an exception instead of silently delivering partial data if the connection is closed before all data has been received.
- raises one specific exception (
ConnectionClosed) if the connection has been closed (while
http.clientconnection may raise any of
~http.client.IncompleteReador simply return '' on read)
- supports non-blocking, asynchronous operation and is compatible with the asyncio module.
- can in most cases distinguish between an unavailable DNS server and an unresolvable hostname.
- is not compatible with old HTTP 0.9 or 1.0 servers.
All request and response headers are represented as
str, but must be
encodable in latin1. Request and response body must be bytes-like
objects or binary streams.
Dugong requires Python 3.3 or newer.
As usual: download the tarball from PyPi, extract it, and run
# python3 setup.py install [--user]
# python3 -m pytest test/
The documentation can be read online and is also included in the doc/html directory of the dugong tarball.
The Dugong API is not yet stable and may change from one release to the other. Starting with version 3.5, Dugong uses semantic versioning. This means changes in the API will be reflected in an increase of the major version number, i.e. the next backwards-incompatible version will be 4.0. Projects designed for e.g. version 3.5 of Dugong are thus recommended to declare a dependency on dugong >= 3.5, < 4.0.
Professional support is available. Please contact Nikolaus Rath <Nikolaus@rath.org> for details.