Skip to main content

The idiomatic asyncio MQTT client 🙌

(formerly known as asyncio-mqtt)

License: BSD-3-Clause PyPI version Supported Python versions PyPI downloads test docs Coverage Typing: strict Code style: black Ruff

Write code like this:

Publish

async with Client("test.mosquitto.org") as client:
    await client.publish("humidity/outside", payload=0.38)

Subscribe

async with Client("test.mosquitto.org") as client:
    async with client.messages() as messages:
        await client.subscribe("humidity/#")
        async for message in messages:
            print(message.payload)

aiomqtt combines the stability of the time-proven paho-mqtt library with an intuitive, idiomatic asyncio interface:

  • No more callbacks! 👍
  • No more return codes (welcome to the MqttError)
  • Graceful disconnection (forget about on_unsubscribe, on_disconnect, etc.)
  • Supports MQTT versions 5.0, 3.1.1 and 3.1
  • Fully type-hinted
  • Did we mention no more callbacks?

Read the documentation at sbtinstruments.github.io/aiomqtt


Installation

aiomqtt can be installed via pip install aiomqtt. It requires Python 3.7+ to run. The only dependency is paho-mqtt.

If you can't wait for the latest version and want to install directly from GitHub, use:

pip install git+https://github.com/sbtinstruments/aiomqtt

Note for Windows users

Since Python 3.8, the default asyncio event loop is the ProactorEventLoop. Said loop doesn't support the add_reader method that is required by aiomqtt. Please switch to an event loop that supports the add_reader method such as the built-in SelectorEventLoop:

# Change to the "Selector" event loop if platform is Windows
if sys.platform.lower() == "win32" or os.name.lower() == "nt":
    from asyncio import set_event_loop_policy, WindowsSelectorEventLoopPolicy
    set_event_loop_policy(WindowsSelectorEventLoopPolicy())
# Run your async application as usual
asyncio.run(main())

License

This project is licensed under the BSD 3-clause License.

Note that the underlying paho-mqtt library is dual-licensed. One of the licenses is the so-called Eclipse Distribution License v1.0. It is almost word-for-word identical to the BSD 3-clause License. The only differences are:

  • One use of "COPYRIGHT OWNER" (EDL) instead of "COPYRIGHT HOLDER" (BSD)
  • One use of "Eclipse Foundation, Inc." (EDL) instead of "copyright holder" (BSD)

Contributing

We're very happy about contributions to the project! You can get started by reading CONTRIBUTING.md.

Versioning

This project adheres to Semantic Versioning. Breaking changes will only occur in major X.0.0 releases.

Changelog

The changelog lives in CHANGELOG.md. It follows the principles of Keep a Changelog.

Related projects

Is aiomqtt not what you're looking for? There are a few other clients you can try:

  • paho-mqtt — Own protocol implementation. Synchronous.
    GitHub stars license
  • gmqtt — Own protocol implementation. Asynchronous.
    GitHub stars license
  • fastapi-mqtt — Asynchronous wrapper around gmqtt. Simplifies integration in your FastAPI application.
    GitHub stars license
  • amqtt — Own protocol implementation. Asynchronous. Includes a broker.
    GitHub stars license
  • mqttools — Own protocol implementation. Asynchronous.
    GitHub stars license
  • trio-paho-mqtt — Asynchronous wrapper around paho-mqtt (similar to aiomqtt). Based on trio instead of asyncio.
    GitHub stars license

Release files for aiomqtt 1.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for aiomqtt 1.1.0
File Size Uploaded
aiomqtt-1.1.0.tar.gz 18.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for aiomqtt 1.1.0
File Interpreter ABI Platform
aiomqtt-1.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 33.9 kB

Release files / aiomqtt-1.1.0.tar.gz

Download URL aiomqtt-1.1.0.tar.gz
Size 18.1 kB
Tags Source
SHA-256 checksum
How to use checksums
8a41cbda3f5dcbedb8ad8568237693afbfda5b65b63b92ca85d7fa4f143f9b0a
BLAKE2b-256 checksum
How to use checksums
eee7d27e45521036589a54bae3b2c328bfa92d9f41b76025ae6d0b8eb241f4bb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/4.0.2 CPython/3.11.4

Release files / aiomqtt-1.1.0-py3-none-any.whl

Download URL aiomqtt-1.1.0-py3-none-any.whl
Size 15.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
7413e323a08b8a9f14d115bb9851fc4db2218326e73037061d7ba9ee740f8dd5
BLAKE2b-256 checksum
How to use checksums
5b71dc35f5c2d7bb943aa6d90b80142176b1cb4a22e869bd3cda03db98cd49fb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/4.0.2 CPython/3.11.4

Release history Release notifications | RSS feed

2.5.1

2 release files

2.5.0

2 release files

2.4.0

2 release files

2.3.2

2 release files

2.3.1

2 release files

2.3.0

2 release files

2.2.0

2 release files

2.1.0

2 release files

2.0.1

2 release files

2.0.0

2 release files

1.2.1

2 release files

1.2.0

2 release files

This release

1.1.0 This release

2 release files

1.0.0

2 release files

0.17.0

2 release files

0.1.3

1 release file

0.1.2

1 release file

0.1.1

1 release file

0.1.0

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page