Skip to main content

The Python SDK For EMQ X Extension

Project description

EMQ X extension Python SDK

Using Python to handle the hooks in EMQ X to record connection and disconnection information, realize client authentication, ACL check and message storage.

Install

EMQ X extension requires Python 3.6 or later :

pip3 install emqx-extension-sdk

The emqx-extension-sdk is open source, welcome to commit to help us improve the function.

Download

You can use the open source version for most functions, but only EMQ X Enterprise edition supports message storage.

Download EMQ X MQTT Broker v4.1 +

EMQ X Enterprise v4.1 is coming.

Configuration

Use emqx-extension-hook plugins:

## Setup the supported drivers
##
## Value: python2 | python3 | java
exhook.drivers = python3

## Search path for scripts/library
exhook.drivers.python3.path = data/extension/hooks.py

## Call timeout
##
## Value: Duration
##exhook.drivers.python3.call_timeout = 5s

## Initial module name
## Your filename or module name
exhook.drivers.python3.init_module = hooks

example:

## data/extension/hooks.py

from emqx_extension.hooks import EmqxHookSdk, hooks_handler
from emqx_extension.types import EMQX_CLIENTINFO_PARSE_T, EMQX_MESSAGE_PARSE_T


class CustomHook(EmqxHookSdk):

    @hooks_handler()
    def on_client_connect(self,
                          conninfo: EMQX_CLIENTINFO_PARSE_T = None,
                          props: dict = None,
                          state: list = None):
        print(f'[Python SDK] [on_client_connect] {conninfo.clientid} connecte')

    @hooks_handler()
    def on_client_connected(self,
                            clientinfo: EMQX_CLIENTINFO_PARSE_T,
                            state: list = None):
        print(
            f'[Python SDK] [on_client_connected] {clientinfo.clientid} connected')

    @hooks_handler()
    def on_client_check_acl(self, clientinfo: EMQX_CLIENTINFO_PARSE_T,
                            pubsub: str,
                            topic: str,
                            result: bool,
                            state: tuple) -> bool:
        print(
            f'[Python SDK] [on_client_check_acl] {clientinfo.username} check ACL: {pubsub} {topic}')
        if clientinfo.username == '':
            return False
        return True

    @hooks_handler()
    def on_client_authenticate(self, clientinfo: EMQX_CLIENTINFO_PARSE_T, authresult,
                               state) -> bool:
        print(
            f'[Python SDK] [on_client_authenticate] {clientinfo.clientid} authenticate')
        if clientinfo.clientid != '':
            return True
        return False

    # on_message_* only EMQ X Enterprise
    @hooks_handler()
    def on_message_publish(self, message: EMQX_MESSAGE_PARSE_T, state):
        print(
            f'[Python SDK] [on_message_publish] {message.topic} {message.payload}')


emqx_hook = CustomHook(hook_module=f'{__name__}.emqx_hook')


def init():
    return emqx_hook.start()


def deinit():
    return

Benchmark

Coming soon.

Load plugin

./bin/emqx_ctl plugins load emqx_extension_hook

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

emqx-extension-sdk-0.2.tar.gz (4.1 kB view details)

Uploaded Source

Built Distributions

emqx_extension_sdk-0.2-py3.6.egg (9.0 kB view details)

Uploaded Source

emqx_extension_sdk-0.2-py2-none-any.whl (9.0 kB view details)

Uploaded Python 2

File details

Details for the file emqx-extension-sdk-0.2.tar.gz.

File metadata

  • Download URL: emqx-extension-sdk-0.2.tar.gz
  • Upload date:
  • Size: 4.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/47.1.1 requests-toolbelt/0.9.1 tqdm/4.46.0 CPython/3.6.7

File hashes

Hashes for emqx-extension-sdk-0.2.tar.gz
Algorithm Hash digest
SHA256 8f11b0c6d923fd7adc5bbf89571ff302286093840df009496b552b1479686336
MD5 1c0527bd47f5710db0f0b78a15c9baae
BLAKE2b-256 2eb4621bf740b5a66b59677adea6b86ed797c70541c4b74ce0c8dcf0783f8979

See more details on using hashes here.

File details

Details for the file emqx_extension_sdk-0.2-py3.6.egg.

File metadata

  • Download URL: emqx_extension_sdk-0.2-py3.6.egg
  • Upload date:
  • Size: 9.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/47.1.1 requests-toolbelt/0.9.1 tqdm/4.46.0 CPython/3.6.7

File hashes

Hashes for emqx_extension_sdk-0.2-py3.6.egg
Algorithm Hash digest
SHA256 5dbcf0957fa0bee417e38fa16205b8a5ce6c5ec46c5687352fb6da1e7ab0b309
MD5 29c94dd9bbfbbea349791b058dbe7fcf
BLAKE2b-256 d29cee3a40eb2c20ea137fe70b1c8b50094137b19810cc63f3b6dba875646421

See more details on using hashes here.

File details

Details for the file emqx_extension_sdk-0.2-py2-none-any.whl.

File metadata

  • Download URL: emqx_extension_sdk-0.2-py2-none-any.whl
  • Upload date:
  • Size: 9.0 kB
  • Tags: Python 2
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/47.1.1 requests-toolbelt/0.9.1 tqdm/4.46.0 CPython/3.6.7

File hashes

Hashes for emqx_extension_sdk-0.2-py2-none-any.whl
Algorithm Hash digest
SHA256 e433910ac3ebaa7c3db549ffa05ac208377b33d9c7ce155f542efa79f21c2980
MD5 ff14df829b8d68877f7b8964115bf125
BLAKE2b-256 9ef76b2fa590c20ebf674483d5314d0f9f30d5f157a88c848f38e30ad1307804

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