Skip to main content

The idiomatic asyncio MQTT client

Project description

The idiomatic asyncio MQTT client 🙌

PyPI downloads PyPI version Supported Python versions Coverage License: BSD-3-Clause

Documentation: https://aiomqtt.bo3hm.com


Write code like this:

Publish

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

Subscribe

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

Key features

  • 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?

Installation

pip install aiomqtt

The only dependency is paho-mqtt.

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

pip install git+https://github.com/empicano/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 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

See CHANGELOG.md, which follows the principles of Keep a Changelog.

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.3.1.tar.gz (82.6 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.3.1-py3-none-any.whl (15.6 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: aiomqtt-2.3.1.tar.gz
  • Upload date:
  • Size: 82.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for aiomqtt-2.3.1.tar.gz
Algorithm Hash digest
SHA256 829d8f8d132ac25212aa6db2ed84182acf774fce0a3469558d0ab13ae2b30cbd
MD5 7e5e2f51673be28f655e2aacbfe8728f
BLAKE2b-256 70b9bfb1dc4b5263fe3f6fe072baaad4646d348cc22f0436f2568f97dd6c7ad6

See more details on using hashes here.

Provenance

The following attestation bundles were made for aiomqtt-2.3.1.tar.gz:

Publisher: publish.yml on empicano/aiomqtt

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

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

File metadata

  • Download URL: aiomqtt-2.3.1-py3-none-any.whl
  • Upload date:
  • Size: 15.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for aiomqtt-2.3.1-py3-none-any.whl
Algorithm Hash digest
SHA256 4915b548344b689be2d4670324deeb283218b76a30eb993755fcbb3e5d228a0c
MD5 ec7944f3d64ff7f9a62b1997a35170b0
BLAKE2b-256 54473a47f519de38a8f20626d9e1112bd4692b284c434cbba72cf0a7148a48d1

See more details on using hashes here.

Provenance

The following attestation bundles were made for aiomqtt-2.3.1-py3-none-any.whl:

Publisher: publish.yml on empicano/aiomqtt

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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