项目作者: sbtinstruments

项目描述 :
Idomatic asyncio wrapper around paho-mqtt
高级语言: Python
项目地址: git://github.com/sbtinstruments/asyncio-mqtt.git
创建时间: 2020-04-06T12:56:54Z
项目社区:https://github.com/sbtinstruments/asyncio-mqtt

开源协议:BSD 3-Clause "New" or "Revised" License

下载


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

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

Subscribe

  1. async with Client("test.mosquitto.org") as client:
  2. await client.subscribe("temperature/#")
  3. async for message in client.messages:
  4. 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

  1. pip install aiomqtt

The only dependency is paho-mqtt.

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

  1. 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:

  1. # Change to the "Selector" event loop if platform is Windows
  2. if sys.platform.lower() == "win32" or os.name.lower() == "nt":
  3. from asyncio import set_event_loop_policy, WindowsSelectorEventLoopPolicy
  4. set_event_loop_policy(WindowsSelectorEventLoopPolicy())
  5. # Run your async application as usual
  6. 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.