Skip to main content

The idiomatic asyncio MQTT client, wrapped around paho-mqtt

Project description

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: Ruff 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:
    await client.subscribe("humidity/#")
    async for message in client.messages:
        print(message.payload)

aiomqtt combines the stability of the time-proven paho-mqtt library with an 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. The only dependency is paho-mqtt.

If you can't wait for the latest version, you can install aiomqtt directly from GitHub with:

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 Eclipse Distribution License v1.0, which is almost 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 aiomqtt! ✨ 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: Synchronous client
  • micropython-mqtt: Asynchronous client for microcontrollers in MicroPython
  • gmqtt: Asynchronous client
  • fastapi-mqtt: Asynchronous wrapper around gmqtt; Simplifies integration with FastAPI
  • amqtt: Asynchronous client; Includes a broker
  • trio-paho-mqtt: Asynchronous wrapper around paho-mqtt; Based on trio instead of asyncio

Project details


Download files

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

Source Distribution

aiomqtt-2.1.0.tar.gz (17.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

aiomqtt-2.1.0-py3-none-any.whl (16.2 kB view details)

Uploaded Python 3

File details

Details for the file aiomqtt-2.1.0.tar.gz.

File metadata

  • Download URL: aiomqtt-2.1.0.tar.gz
  • Upload date:
  • Size: 17.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.0.0 CPython/3.12.3

File hashes

Hashes for aiomqtt-2.1.0.tar.gz
Algorithm Hash digest
SHA256 8501c373c00fa7074a990a951285f31340c29b6541aea15e040da9ea33d79719
MD5 83a05e30a73feb6131a064f83e67a710
BLAKE2b-256 74ff4d8c5f1b79bb196c5e87e24c68078ae03e3518be089140acf7cb519ea786

See more details on using hashes here.

File details

Details for the file aiomqtt-2.1.0-py3-none-any.whl.

File metadata

  • Download URL: aiomqtt-2.1.0-py3-none-any.whl
  • Upload date:
  • Size: 16.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.0.0 CPython/3.12.3

File hashes

Hashes for aiomqtt-2.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 ba62afe18e57b01ef28240f192b73cd54d7e42d827a47697997d3e6252a130d1
MD5 eff21ac45c7383a68b962cd4989aca72
BLAKE2b-256 de3412327f5129a5b2e828516c21440a8f4c053b5f6acb52b24c0ef9de6f5244

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page