Skip to main content

Queue server base on RocksDB as a KV-Store backend and gRPC as an interface

Project description

Logo

Queue server base on RocksDB as a KV-Store backend and gRPC as an interface

license Python Build PyPi

Table of Contents

About The Project

Garrison is a RocksDB wrapped in a gRPC service to expose some high level functionalities. Garrison is also implments queue functionalities on the top of RocksDB KV store functionalities.

Built With

Prerequisites

In order to pip install rocksdb you will need to install the following distro packages

  • Ubuntu 18.04
sudo apt install librocksdb-dev libsnappy-dev liblz4-dev

Installation

pip3 install garrison-server

Usage

Server

python3 -m garrison.server --database-path=/data/garrison_db --port=10000

Client

import garrison.client

client = garrison.client.GarrisonClient(
    host='127.0.0.1',
    port=10000,
)

# Sets a key inside the database - return whether the key is new or existed
client.key_set(
    key=b'key_name',
    value=b'value',
)
# Retrieving a key - return None if key does not exist
value = client.key_get(
    key=b'key_name',
)
# Deletes a key inside the database - return whether the key is deleted or wasn't existed
deleted_successfuly = client.key_delete(
    key=b'key_name',
)


# Push items into a queue.
# Priority is either NORMAL or HIGH, and controls whether the items will be pushed on the top or buttom of the queue
client.queue_push(
    queue_name=b'queue_name',
    items=[
        b'item one',
        b'item two',
        b'item three',
    ],
    priority='NORMAL',
)
# Get the number of items in the queue
number_of_items = client.queue_length(
    queue_name=b'queue_name',
)
# Pulling items from the queue - return list of items. HIGH priority first.
items = client.queue_pop(
    queue_name=b'queue_name',
    number_of_items=3,
)
# Deletes a key inside the database - return whether the key is deleted or wasn't existed
deleted_successfuly = client.queue_delete(
    queue_name=b'queue_name',
)

License

Distributed under the MIT License. See LICENSE for more information.

Contact

Gal Ben David - intsights@gmail.com

Project Link: https://github.com/intsights/garrison

Project details


Download files

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

Files for garrison-server, version 0.1.0
Filename, size File type Python version Upload date Hashes
Filename, size garrison-server-0.1.0.tar.gz (22.0 kB) File type Source Python version None Upload date Hashes View

Supported by

AWS AWS Cloud computing Datadog Datadog Monitoring Facebook / Instagram Facebook / Instagram PSF Sponsor Fastly Fastly CDN Google Google Object Storage and Download Analytics Huawei Huawei PSF Sponsor Microsoft Microsoft PSF Sponsor NVIDIA NVIDIA PSF Sponsor Pingdom Pingdom Monitoring Salesforce Salesforce PSF Sponsor Sentry Sentry Error logging StatusPage StatusPage Status page