Metadata-Version: 2.3
Name: transmit
Version: 0.5.0
Summary: Transmit Server & Client use thrift
Author: hbh112233abc
Author-email: hbh112233abc <hbh112233abc@163.com>
Requires-Dist: loguru>=0.7.3
Requires-Dist: pydantic>=2.5.3
Requires-Dist: thrift>=0.22.0
Requires-Python: >=3.9
Description-Content-Type: text/markdown

# Transmit Server & Client

## Install

```
pip install transmit
```

## Usage

### Server

```
from transmit.server import Server

class TestServer(Server):
    def __init__(self,port=18100):
        super().__init__(port)

    def test_function(self,msg):
        print('Testing:',msg)
        return {"say":"Happy everyday!!!"}

if __name__ == '__main__':
    ts = TestServer()
    ts.run()

```

> Result

```shell
START SERVER 0.0.0.0:18100

```

#### Success Response

```
{
    "code":1,
    "msg":"success",
    "data":"handle result data. AnyType"
}
```

#### Error Response

```
{
    "code":0,
    "msg":"error message",
    "data":null
}
```

### Client

```
from transmit.client import Client

with Client("127.0.0.1",18100) as c:
    result = c.test_function({"msg":"hello world"})
    print(type(result))
    print(result)

```

> Result

```shell
> <class 'dict'>
> {'say': 'Happy everyday!!!'}
```

### Advanced Usage

1. debug mode

debug mode will print and log all request and response data.

```shell
# debug server
> python test_server.py --debug 1
```

```python
# debug client
with Client("127.0.0.1",18100,debug=True) as c:
    ...
```

2. server cli setting

```shell
> python test_server.py --host="127.0.0.1" --port=3000 --workers=3 --type=<process|thread> --debug=1
```

3. docker health check

```shell
python -m transmit.health_check
```

### Refs

[Thrift](https://thrift.apache.org/)
[thrift几种server模式的比较](https://blog.csdn.net/hzllblzjily/article/details/50645114)
