Skip to main content

No project description provided

Project description

FastMQTT

FastMQTT is a high-performance, easy-to-use MQTT v5 client library for Python, built on top of asyncio. It provides a simple and intuitive API for working with MQTT, offering features like automatic reconnection, custom encoders/decoders, and full support for MQTT v5 capabilities.

Features

  • Full support for MQTT v5
  • Asynchronous API based on asyncio
  • Automatic reconnection
  • Flexible subscription management
  • Custom payload encoders and decoders
  • Request-response pattern support
  • Router-based topic handling

Installation

Install FastMQTT using pip:

pip install fastmqtt

Usage Guide

Basic Usage

Here's a simple example demonstrating how to use FastMQTT:

import asyncio
import logging
from fastmqtt import FastMQTT, Message

logging.basicConfig(level=logging.INFO)

fastmqtt = FastMQTT("test.mosquitto.org")

@fastmqtt.on_message("my/topic/1")
async def message_handler(message: Message):
    print(f"Message received: {message.payload.decode()} on topic {message.topic}")

async def main():
    async with fastmqtt:
        await fastmqtt.publish("my/topic/1", "Hello from FastMQTT!")
        await asyncio.sleep(5)

if __name__ == "__main__":
    asyncio.run(main())

Subscription Management

FastMQTT offers multiple ways to manage subscriptions:

  1. Using the @on_message decorator, can be used only before connecting:
@fastmqtt.on_message("my/topic")
async def handler(message: Message):
    ...
  1. Using the register method before connecting, can be used only before connecting:
fastmqtt.register(handler, "my/topic")
  1. Using the subscribe method after connecting, can be used always:
await fastmqtt.subscribe(handler, "my/topic")

Router-based Topic Handling

For better organization of your MQTT handlers, use the MQTTRouter:

from fastmqtt import MQTTRouter

router = MQTTRouter()

@router.on_message("my/topic")
async def handler(message: Message):
    ...

fastmqtt = FastMQTT("test.mosquitto.org", routers=[router])

Custom Encoders and Decoders

FastMQTT supports custom payload encoding and decoding:

from fastmqtt.encoders import JsonEncoder, JsonDecoder

fastmqtt = FastMQTT(
    "test.mosquitto.org",
    payload_encoder=JsonEncoder(),
    payload_decoder=JsonDecoder()
)

# Now you can publish and receive JSON payloads
await fastmqtt.publish("my/topic", {"key": "value"})

Request-Response Pattern

FastMQTT provides a convenient way to implement request-response patterns:

async with fastmqtt.response_context("response/topic") as ctx:
    response = await ctx.request("request/topic", "Hello")
    print(f"Response: {response.payload.decode()}")

MQTT v5 Features

FastMQTT fully supports MQTT v5 features. Here are some examples:

  1. Using MQTT v5 properties:
from fastmqtt.properties import PublishProperties

props = PublishProperties(
    content_type="application/json",
    user_property=[("key", "value")]
)
await fastmqtt.publish("my/topic", payload, properties=props)
  1. Handling retained messages:
from fastmqtt.types import RetainHandling

@fastmqtt.on_message("my/topic", retain_handling=RetainHandling.DO_NOT_SEND)
async def handler(message: Message):
    ...
  1. Working with shared subscriptions:
@fastmqtt.on_message("$share/group/my/topic")
async def shared_handler(message: Message):
    ...

Contributing

Contributions to FastMQTT are welcome! Please follow these steps to contribute:

  1. Fork the repository
  2. Create a new branch for your feature or bug fix
  3. Write your code and tests
  4. Run the example scripts to ensure everything passes
  5. Submit a pull request with a clear description of your changes

License

FastMQTT is released under the MIT License. See the LICENSE file for details.

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

fastmqtt-0.2.1.tar.gz (14.1 kB view details)

Uploaded Source

Built Distribution

fastmqtt-0.2.1-py3-none-any.whl (18.7 kB view details)

Uploaded Python 3

File details

Details for the file fastmqtt-0.2.1.tar.gz.

File metadata

  • Download URL: fastmqtt-0.2.1.tar.gz
  • Upload date:
  • Size: 14.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.0 CPython/3.12.5

File hashes

Hashes for fastmqtt-0.2.1.tar.gz
Algorithm Hash digest
SHA256 05634ed1fc61888b4ecab034452951ba918e26e9a106bb9fafb7b664de4dfe9f
MD5 48c59bb8f8e175c9e98eb5975697e03b
BLAKE2b-256 4aecad5775a4759a4ae0e9687ec0dd0f280c30f61bfad5747d047dad2ab2ba64

See more details on using hashes here.

File details

Details for the file fastmqtt-0.2.1-py3-none-any.whl.

File metadata

  • Download URL: fastmqtt-0.2.1-py3-none-any.whl
  • Upload date:
  • Size: 18.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.0 CPython/3.12.5

File hashes

Hashes for fastmqtt-0.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 d75eb263fa6ec5006f3542d12891b745523d77234bb89b4e7f62edd0fbe02785
MD5 9f095db41cb516a39a28731f2b99f8f6
BLAKE2b-256 b55b817e0334ddaeeef1dcefc0f5c22588a9fd4bea7d5f28f0ef159b7e602f28

See more details on using hashes here.

Supported by

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