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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8f11b0c6d923fd7adc5bbf89571ff302286093840df009496b552b1479686336 |
|
MD5 | 1c0527bd47f5710db0f0b78a15c9baae |
|
BLAKE2b-256 | 2eb4621bf740b5a66b59677adea6b86ed797c70541c4b74ce0c8dcf0783f8979 |
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5dbcf0957fa0bee417e38fa16205b8a5ce6c5ec46c5687352fb6da1e7ab0b309 |
|
MD5 | 29c94dd9bbfbbea349791b058dbe7fcf |
|
BLAKE2b-256 | d29cee3a40eb2c20ea137fe70b1c8b50094137b19810cc63f3b6dba875646421 |
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | e433910ac3ebaa7c3db549ffa05ac208377b33d9c7ce155f542efa79f21c2980 |
|
MD5 | ff14df829b8d68877f7b8964115bf125 |
|
BLAKE2b-256 | 9ef76b2fa590c20ebf674483d5314d0f9f30d5f157a88c848f38e30ad1307804 |