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
- https://github.com/apache/kudu/tree/1.16.0
- libprotoc 3.21.6 (or python: grpcio-tools)
Run test
python -m venv env
source env/bin/activate
pip install protobuf
python -m test.test_tcp
Generate protobuf files
# kudu-master download from github.com kudu
# Because kudu proto generate .pb2 files in the name space: kudu, we need to change it into akudu.kudu
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
# Generate
find kudu-master/src/ -name "*.proto" | xargs protoc -I=kudu-master/src --python_out=.
# or
find kudu-master/src/ -name "*.proto" | xargs python -m grpc_tools.protoc -I=kudu-master/src --python_out=.
Ref
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
akudu-0.0.1.tar.gz
(5.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
akudu-0.0.1-py3-none-any.whl
(5.2 kB
view details)
File details
Details for the file akudu-0.0.1.tar.gz.
File metadata
- Download URL: akudu-0.0.1.tar.gz
- Upload date:
- Size: 5.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/4.0.2 CPython/3.10.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4cff0ee341a89abfc8686d4e3ab572f70983b08a398fb56d26dc880621848bf7
|
|
| MD5 |
9561d6ac9734186338a25c666dd3cf5a
|
|
| BLAKE2b-256 |
cc38eb8219355c390d1102393b8c19082acdbb014a431bf08158ba8a0f18d7e9
|
File details
Details for the file akudu-0.0.1-py3-none-any.whl.
File metadata
- Download URL: akudu-0.0.1-py3-none-any.whl
- Upload date:
- Size: 5.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/4.0.2 CPython/3.10.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d21bf33dc39c4c8df407ca045bc2be13232e75c4170dd5992283bf6190149378
|
|
| MD5 |
06c27135819459b079995a721455c0e0
|
|
| BLAKE2b-256 |
345ccc284c15a2aa36be1fc876804cf65aba55bbe54af3e987cdc8bba6aa679e
|