A Py-based lib for KnotLink communication
Project description
KnotLink Python 客户端库
KnotLink 协议的 Python 实现,提供四种标准客户端身份:询问者、回复者、发送者、订阅者,以及键值对数据格式工具。
安装
pip install knotlink
快速开始
询问者 (OpenSocketQuerier)
from knotlink import OpenSocketQuerier
querier = OpenSocketQuerier("app.knotlinksdk.test", "test_socket")
result = querier.query("Hello, Responser!")
print(result)
回复者 (OpenSocketResponser)
from knotlink import OpenSocketResponser
def on_request(data):
print(f"Received: {data}")
return f"Echo: {data}"
responser = OpenSocketResponser("app.knotlinksdk.test", "test_socket")
responser.set_RecvFunc(on_request)
input("Press Enter to stop...")
发送者 (SignalSender)
from knotlink import SignalSender
sender = SignalSender()
sender.set_config("app.knotlinksdk.test", "test_signal")
sender.emitt("Hello from Sender!")
订阅者 (SignalSubscriber)
from knotlink import SignalSubscriber
def on_received(data):
print(f"Received: {data}")
subscriber = SignalSubscriber("app.knotlinksdk.test", "test_signal")
subscriber.set_RecvFunc(on_received)
input("Press Enter to stop...")
键值对工具 (KLUDF)
KnotLink 数据格式标准化工具,提供键值对格式的序列化与反序列化能力。
from knotlink import KLKVMap
# 创建键值对映射
kv = KLKVMap()
kv["name"] = "张三"
kv["course"] = "数学"
kv["score"] = "95"
# 序列化为字符串
serialized = kv.serialize()
print(serialized) # "name=张三;course=数学;score=95"
# 反序列化为映射
new_kv = KLKVMap()
new_kv.deserialize(serialized)
print(new_kv.get("name")) # "张三"
print(new_kv.get("missing", "默认值")) # "默认值"
核心概念
| 身份 | 端口 | 说明 |
|---|---|---|
| 询问者 (Querier) | 6376 | 主动发起请求,等待回复 |
| 回复者 (Responser) | 6378 | 接收请求,回传结果 |
| 发送者 (Sender) | 6370 | 单向发送信号 |
| 订阅者 (Subscriber) | 6372 | 监听信号,触发回调 |
API 参考
询问者 OpenSocketQuerier
OpenSocketQuerier(app_id, socket_id)
querier.query(data) # 同步
await querier.query_async(data) # 异步
回复者 OpenSocketResponser
OpenSocketResponser(app_id, socket_id)
responser.set_RecvFunc(callback)
responser.send_back(data, question_id)
发送者 SignalSender
SignalSender()
sender.set_config(app_id, signal_id)
sender.emitt(data)
订阅者 SignalSubscriber
SignalSubscriber(app_id, signal_id)
subscriber.set_RecvFunc(callback)
键值对工具 KLKVMap
KLKVMap()
kv.serialize() # 序列化为 "key1=val1;key2=val2" 格式
kv.deserialize(str) # 从字符串反序列化
kv.get(key, default) # 安全读取,键不存在时返回默认值(默认空字符串)
数据格式 KLUDF
KLUDF() # 通用数据格式基类(预留扩展)
测试
# 单元测试
python tests/unit/nogui_querier_test.py
# 集成测试
python tests/integration/test_querier_responser_integration.py
# 循环压力测试
python tests/integration/test_querier_responser_integration_loop.py
测试标识符:app.knotlinksdk.test / test_socket / test_signal
依赖
- Python 3.8+
- 无外部依赖
许可证
MIT License Copyright (c) 2024-2026 KnotLink Contributors
链接
- KnotLink 文档:https://knotlink.cn/
- KnotLink 协议:https://github.com/KnotLink-Protocol
- 问题反馈:Issues · KnotLink-Protocol/KnotLinkSDK
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
knotlink-2.0.0.tar.gz
(8.9 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
knotlink-2.0.0-py3-none-any.whl
(10.6 kB
view details)
File details
Details for the file knotlink-2.0.0.tar.gz.
File metadata
- Download URL: knotlink-2.0.0.tar.gz
- Upload date:
- Size: 8.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.8.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1519af006bffaeb7f9a09df6723bf81eb32a2d9b1b1ef5a70d47b456a0956a25
|
|
| MD5 |
a34418b5b9082f9d3b0789339c622f9a
|
|
| BLAKE2b-256 |
7da1c91fd1579a1431d180853d26ef9574c6bde08b492ca26529ad0e1f638094
|
File details
Details for the file knotlink-2.0.0-py3-none-any.whl.
File metadata
- Download URL: knotlink-2.0.0-py3-none-any.whl
- Upload date:
- Size: 10.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.8.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3ace7a6585d446bb98f30f340bc926d6b1b25deed0c8bceca60cb60350086538
|
|
| MD5 |
11c27fe30c059a0ec5c9d57e211144e2
|
|
| BLAKE2b-256 |
57ab0ff10790696c2d590dbbf3cec93454248eb60e32bc9d5885c0f282d29bb5
|