Skip to main content

Official Python SDK for getMe.

Project description

getMe Python SDK

The official Python client library for the getMe key-value store. This SDK abstracts the underlying HTTP API calls, providing Python developers with a simple, idiomatic interface to interact with a getMe runtime.

About getMe

getMe is a persistent, embeddable key-value store written in Go. It is heavily inspired by the design of Bitcask and is optimized for high write throughput and low-latency reads.

The engine runs on a few core principles:

  • Log-Structured Storage: All data is written to an append-only log file, maximizing write speed by avoiding slow, random disk I/O.
  • In-Memory Hash Index: A hash table is maintained in memory mapping each key to its exact on-disk location, enabling single disk seek lookups.
  • Compaction: A background process that periodically removes stale data to reclaim disk space.
  • Batch Operations: A batch API amortizes the cost of writes, allowing for extremely high ingestion rates.

For a deep dive into the architecture, please refer to the Root README and the Server README.

Server Dependency

Important: This SDK acts merely as a client. The getMe core server engine must be running independently for this library to function.

Running the Core Engine via Docker

For a containerized deployment of just the core engine, you can use the official pure server image: aatir0docking/getme.server

When running this image, the core engine listens for incoming requests on a Unix domain socket. To allow the host machine (and the HTTP Proxy that the SDK communicates with) to connect to this engine, you must bind-mount the socket directory to the host.

docker run -d \
  --name getme-server \
  -v getme_data:/var/lib/getMeStore/dataDir \
  -v /tmp/getMeStore/sockDir:/tmp/getMeStore/sockDir \
  aatir0docking/getme.server:latest

Why manage the core engine separately?

Decoupling the database engine from the application logic provides several critical advantages:

  • Performance & Isolation: The core engine heavily utilizes memory for its hash index and performs continuous background disk I/O for compaction. Running it separately prevents the storage engine from starving your Python application of memory or compute resources (and vice-versa).
  • Independent Scaling: You can scale your Python applications (e.g., across multiple workers or containers) dynamically while connecting to a centralized, standalone getMe instance.
  • Polyglot Ecosystems: A decoupled server can serve multiple applications simultaneously, even if those applications are built across entirely different technology stacks.

Other Available SDKs

While this is the Python client, getMe supports multiple languages. Detailed information on all available SDKs can be found in the SDKs Hub README.

The available official SDKs are:

Links and Resources

Below is a comprehensive list of resources and documentation linked throughout the getMe ecosystem:

Engineering Blog Series

If you are interested in the internal workings, design decisions, and the journey of building the getMe storage engine from scratch, check out our engineering blog series:

License

This project is licensed under the GNU Affero General Public License v3.0 (AGPLv3) - see the LICENSE file for details.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

getme_python_sdk-1.1.0.tar.gz (4.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

getme_python_sdk-1.1.0-py3-none-any.whl (5.6 kB view details)

Uploaded Python 3

File details

Details for the file getme_python_sdk-1.1.0.tar.gz.

File metadata

  • Download URL: getme_python_sdk-1.1.0.tar.gz
  • Upload date:
  • Size: 4.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.21 {"installer":{"name":"uv","version":"0.9.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for getme_python_sdk-1.1.0.tar.gz
Algorithm Hash digest
SHA256 0cdc42c3953800ba601f056b31e6ac520d451f39ef12df73d2d8417ab2cbf38e
MD5 2939dfc97d586e62b75d48387df5d7a0
BLAKE2b-256 1f964b423fcb0e5afcff7106c643376e0999f422610ea6a3678028805e48509d

See more details on using hashes here.

File details

Details for the file getme_python_sdk-1.1.0-py3-none-any.whl.

File metadata

  • Download URL: getme_python_sdk-1.1.0-py3-none-any.whl
  • Upload date:
  • Size: 5.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.21 {"installer":{"name":"uv","version":"0.9.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for getme_python_sdk-1.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 3f956b906b7bf10cb33a762c53b26113c0c29d91a65a644f0f5d8105a7e0c22a
MD5 c4b4a9abd5fd48e1b2c59433ad2a2f27
BLAKE2b-256 ae70b7bd478ed08f538666a1206021841318168e07a79ff3a11f0928748150d2

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page