Skip to main content

The Coherence Python Client allows Python applications to act as cache clients to a Coherence Cluster using Google's gRPC framework as the network transport.

Project description

Coherence Python Client

CI/CD Quality Gate Status License

The Coherence Python Client allows Python applications to act as cache clients to an Oracle Coherence cluster using gRPC as the network transport.

Features

  • Familiar Map-like interface for manipulating cache entries including but not limited to:
    • put, put_if_absent, put_all, get, get_all, remove, clear, get_or_default, replace, replace_mapping, size, is_empty, contains_key, contains_value
  • Cluster-side querying, aggregation and filtering of map entries
  • Cluster-side manipulation of map entries using EntryProcessors
  • Registration of listeners to be notified of:
    • mutations such as insert, update and delete on Maps
    • map lifecycle events such as truncated, released or destroyed
    • session lifecycle events such as connected, disconnected, reconnected and closed
  • Support for storing Python objects as JSON as well as the ability to serialize to Java objects on the server for access from other Coherence language API's

Requirements

  • Coherence CE 22.06.4+ or Coherence 14.1.1.2206.4+ Commercial edition with a configured gRPCProxy.
  • Python 3.8.x

Starting a Coherence Cluster

Before testing the Python client, you must ensure a Coherence cluster is available. For local development, we recommend using the Coherence CE Docker image; it contains everything necessary for the client to operate correctly.

docker run -d -p 1408:1408 ghcr.io/oracle/coherence-ce:24.03

Installation

python3 -m pip install coherence-client

Documentation

https://oracle.github.io/coherence-py-client/

Examples

The following example connects to a Coherence cluster running gRPC Proxy on default port of 1408, creates a new NamedCache with key str and value of a str|int and issues put(), get(), size() and remove operations.

from coherence import NamedCache, Session
import asyncio
from typing import Union


async def run_test():

    # create a new Session to the Coherence server
    session: Session = await Session.create()

    # create a new NamedCache with key of string|int and value of string|int
    cache: NamedCache[str, Union[str,int]] = await session.get_cache("test")

    # put a new key/value
    k: str = "one"
    v: str = "only-one"
    await cache.put(k, v)

    # get the value for a key in the cache
    r = await cache.get(k)

    # print the value got for a key in the cache
    print("The value of key \"one\" is " + r)

    k1: str = "two"
    v1: int = 2
    await cache.put(k1, v1)
    r = await cache.get(k1)
    print("The value of key \"two\" is " + str(r))

    # print the size of the cache
    print("Size of the cache test is " + str(await cache.size()))

    # remove an entry from the cache
    await cache.remove(k1)


# run the test
asyncio.run(run_test())

Help

We have a public Slack channel where you can get in touch with us to ask questions about using the Coherence Python Client or give us feedback or suggestions about what features and improvements you would like to see. We would love to hear from you. To join our channel, please visit this site to get an invitation. The invitation email will include details of how to access our Slack workspace. After you are logged in, please come to #coherence and say, "hello!"

If you would like to raise an issue please see here.

Contributing

This project welcomes contributions from the community. Before submitting a pull request, please review our contribution guide

Security

Please consult the security guide for our responsible security vulnerability disclosure process

License

Copyright (c) 2023, 2024, Oracle and/or its affiliates.

Released under the Universal Permissive License v1.0 as shown at https://oss.oracle.com/licenses/upl/.

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

coherence_client-1.0.3.tar.gz (57.1 kB view details)

Uploaded Source

Built Distribution

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

coherence_client-1.0.3-py3-none-any.whl (59.4 kB view details)

Uploaded Python 3

File details

Details for the file coherence_client-1.0.3.tar.gz.

File metadata

  • Download URL: coherence_client-1.0.3.tar.gz
  • Upload date:
  • Size: 57.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.8.18

File hashes

Hashes for coherence_client-1.0.3.tar.gz
Algorithm Hash digest
SHA256 854eb5f8dee0fb302f3c3e0ffb6be0cc13c1df15b8a96450175baccd6662971a
MD5 124b4d62319cb715004c068ea82decb1
BLAKE2b-256 24911d1c81f6737c95cd5017903fbf981a1dc46e1377faa372f4ae4fc9f698be

See more details on using hashes here.

File details

Details for the file coherence_client-1.0.3-py3-none-any.whl.

File metadata

File hashes

Hashes for coherence_client-1.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 c2d8e1e452ae7017d7e0ba5895a3071ce7c8da2833f8bd0a0b83a79b4ce5b6ff
MD5 f685d63307401f4837c3de9bbe1a056a
BLAKE2b-256 e562e127c85259489b7e16e12b1519282f7cb1095cc2f700f9f60b92c2a1ef26

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