akudu
Async Kudu Client. Graceful way for Python to async connect to Kudu database (data storage engine).
Quick start
It is recommanded to use Python == 3.10, others are not tested.
*protobuf>=3.20.0* is required, or you need to compile the protobuf files by yourself.
-
Install akudu from PyPI.
pip install akudu
-
Test your Kudu server, such as 192.168.0.111:7051 with code here:
import asyncio
import akudu
cli = akudu.Client('192.168.0.111', 7051)
async def op():
tables = await cli.list_tables()
print(tables)
asyncio.run(op())
-
Here are some frequently used calls, for more please refer to the documentation.
cli.ping()
cli.list_tables()
cli.insert()
cli.scan()
Caution
- This client is not thread-safety, it is recommended that one instance of Kudu() for each threads.
More
TODO
- connect timeout, read timeout, write timeout
- Steady state ping-pong
- call-id used-up
- test all calls
- benchmark test
- support RPC Sidecars
- support TLS
- fully support SASL
Base on
Run test
python -m venv env
source env/bin/activate
pip install protobuf
python -m test.test_tcp
Generate protobuf files
find kudu-master/src/ -name "*.proto" | xargs sed -i 's/import "kudu/import "akudu\/kudu/g'
mkdir kudu-master/src/akudu
mv kudu-master/src/kudu kudu-master/src/akudu
find kudu-master/src/ -name "*.proto" | xargs protoc -I=kudu-master/src --python_out=.
find kudu-master/src/ -name "*.proto" | xargs python -m grpc_tools.protoc -I=kudu-master/src --python_out=.
Ref