Metadata-Version: 2.1
Name: busrt-worker
Version: 0.1.3
Summary: busrt-worker is a Python-based async busrt message handle framework
Home-page: https://git.loom.run/Coder/amqp-worker
License: MIT
Keywords: busrt,message,rpc
Author: JimZhang
Author-email: zzl22100048@gmail.com
Requires-Python: >=3.10,<4.0
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Requires-Dist: cramjam (>=2.6.2,<3.0.0)
Requires-Dist: loguru (>=0.7.0,<0.8.0)
Requires-Dist: msgpack (>=1.0.5,<2.0.0)
Project-URL: Repository, https://git.loom.run/Coder/amqp-worker
Description-Content-Type: text/markdown

# Busrt Worker
> `BUS/RT`是一个快速、灵活且非常易于使用的框架，它使用Rust/Tokio编写，受到NATS、ZeroMQ和Nanomsg的启发。

Busrt Worker是一个基于busrt消息中间件的异步框架，它对Python库进行了封装，使其更易于使用。


## 特点

- 异步：Busrt Worker基于python asyncio异步引擎，可以轻松处理高并发请求。
- 易用性：Busrt Worker对原生的busrt python客户端进行了封装，使用装饰器即可轻松创建rpc服务。
- 高性能：BUS/RT 使用Rust/Tokio编写，具有出色的性能和可靠性。

## 用法

要使用Busrt Worker，请按照以下步骤操作：

1. 安装Busrt Worker：`pip install busrt-worker`
2. 导入Busrt Worker：在您的Python项目中导入Busrt Worker。
3. 创建Busrt Worker App：创建一个App对象，并注册连接信息。
4. 处理消息：使用装饰器指明消息处理方式。

以下是一个示例代码片段，演示如何使用Busrt Worker：

```python
import asyncio

from loguru import logger

from busrtworker import App, ConnectionInfo
# 创建 App对象
app = App()

# 连接信息
api_ci = ConnectionInfo('api', 'localhost:9800', 'busrt.worker.test', static=True, topic='test/#')
caller_ci = ConnectionInfo('caller', 'localhost:9800', 'busrt.worker.test', static=True)

# 注册连接
api = app.registry(api_ci)
app.registry(caller_ci)

# rpc调用
@api.on_call()
def add(a, b):
    return a + b

# 主题订阅
@api.subscribe('test/:name')
def print_name(name: str):
    logger.info(f'{name} pub message')

# 钩子函数注册
@app.run_on_startup
async def test(server):
    async def call():
        await asyncio.sleep(1)
        logger.info(f'call remote add result {(await app.caller.add(api_ci.final_name,a=1, b=2))}')
        await app.caller.send('test/i_am_caller')
    asyncio.create_task(call())

# 启动程序
app.run()
```

## License
The MIT License.
