Coder Social home page Coder Social logo

jiargei / asyncio-mqtt Goto Github PK

View Code? Open in Web Editor NEW

This project forked from sbtinstruments/aiomqtt

0.0 0.0 0.0 602 KB

The idiomatic asyncio MQTT client, wrapped around paho-mqtt

Home Page: https://sbtinstruments.github.io/asyncio-mqtt

License: BSD 3-Clause "New" or "Revised" License

Shell 1.55% Python 98.45%

asyncio-mqtt's Introduction

The idiomatic asyncio MQTT Client ๐Ÿ™Œ

License: BSD-3-Clause PyPI version Supported Python versions PyPI downloads test suite docs Coverage pre-commit.ci status Typing: strict Code Style: Black Ruff

Write code like this:

Publisher

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

Subscriber

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)

asyncio-mqtt combines the stability of the time-proven paho-mqtt library with a modern, asyncio-based interface.

  • No more callbacks! ๐Ÿ‘
  • No more return codes (welcome to the MqttError)
  • Graceful disconnection (forget about on_unsubscribe, on_disconnect, etc.)
  • Compatible with async code
  • Fully type-hinted
  • Did we mention no more callbacks?

The whole thing is less than 900 lines of code.


Read the documentation at sbtinstruments.github.io/asyncio-mqtt


Installation

asyncio-mqtt can be installed via pip install asyncio-mqtt. 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/asyncio-mqtt

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 asyncio-mqtt. Please switch to an event loop that supports the add_reader method such as the built-in SelectorEventLoop:

# Change to the "Selector" event loop
asyncio.set_event_loop_policy(asyncio.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 happy about your contributions to the project!

You can get started by reading the CONTRIBUTING.md.

Versioning

This project adheres to Semantic Versioning.

Expect API changes until we reach version 1.0.0. After 1.0.0, breaking changes will only occur in a major release (e.g., 2.0.0, 3.0.0, etc.).

Changelog

The changelog lives in the CHANGELOG.md document. It adheres to the principles of Keep a Changelog.

Related projects

Is asyncio-mqtt 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 asyncio-mqtt). Based on trio instead of asyncio.
    GitHub stars license

asyncio-mqtt's People

Contributors

admiralnemo avatar chmielowiec avatar empicano avatar fipwmaqzufheoxq92ebc avatar flyte avatar frederikaalund avatar functionpointer avatar gilbertsmink avatar gluap avatar jonathanplasse avatar laundmo avatar madnadyka avatar martinhjelmare avatar mmmspatz avatar oholsen avatar opengs avatar pallas avatar pbrkr avatar pi-slh avatar pre-commit-ci[bot] avatar rnovatorov avatar sdwilsh avatar sohaib90 avatar steverpalmer avatar stewarthaines avatar tropxy avatar vitalerter avatar wrobell avatar xydan83 avatar yawor avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.