Hazelcast Python Client
=======================
.. image:: https://img.shields.io/pypi/v/hazelcast-python-client
:target: https://pypi.org/project/hazelcast-python-client/
:alt: PyPI
.. image:: https://img.shields.io/static/v1?label=Github&message=Hazelcast%20Python%20client&style=flat&logo=github
:target: https://github.com/hazelcast/hazelcast-python-client
:alt: Github Repository
.. image:: https://img.shields.io/pypi/l/hazelcast-python-client
:target: https://github.com/hazelcast/hazelcast-python-client/blob/master/LICENSE.txt
:alt: License
----
`Hazelcast `__ is an open-source distributed
in-memory data store and computation platform that provides a wide
variety of distributed data structures and concurrency primitives.
Hazelcast Python client is a way to communicate to Hazelcast clusters
and access the cluster data. The client provides both a Future-based
asynchronous API, and an asyncio API suitable for wide ranges of use cases.
Overview
--------
Usage
~~~~~
.. code:: python
from hazelcast import HazelcastClient
# Connect to Hazelcast cluster.
client = HazelcastClient()
# Get or create the "distributed-map" on the cluster.
distributed_map = client.get_map("distributed-map")
# Put "key", "value" pair into the "distributed-map" and wait for
# the request to complete.
distributed_map.set("key", "value").result()
# Try to get the value associated with the given key from the cluster
# and attach a callback to be executed once the response for the
# get request is received. Note that, the set request above was
# blocking since it calls ".result()" on the returned Future, whereas
# the get request below is non-blocking.
get_future = distributed_map.get("key")
get_future.add_done_callback(lambda future: print(future.result()))
# Do other operations. The operations below won't wait for
# the get request above to complete.
print("Map size:", distributed_map.size().result())
# Shutdown the client.
client.shutdown()
Usage (Asyncio)
~~~~~~~~~~~~~~~
.. code:: python
import asyncio
from hazelcast.asyncio import HazelcastClient
async def amain():
# Connect to Hazelcast cluster.
client = await HazelcastClient.create_and_start()
# Get or create the "distributed-map" on the cluster.
distributed_map = await client.get_map("distributed-map")
# Put "key", "value" pair into the "distributed-map".
# And wait for the request to complete.
await distributed_map.set("key", "value")
# Try to get the value associated with the given key from the cluster
# and attach a callback to be executed once the response for the
# get request is received. Note that, the set request above was
# synchronous, since the result is awaited.
# Whereas the get request below is asynchronous.
get_future = asyncio.create_task(distributed_map.get("key"))
get_future.add_done_callback(lambda future: print("Future's value:", future.result()))
# Do other operations. The operations below won't wait for
# the get request above to complete.
map_size = await distributed_map.size()
print("Map size:", map_size)
# Shutdown the client.
await client.shutdown()
asyncio.run(amain())
If you are using Hazelcast and the Python client on the same machine,
the default configuration should work out-of-the-box. However,
you may need to configure the client to connect to cluster nodes that
are running on different machines or to customize client properties.
Configuration
~~~~~~~~~~~~~
.. code:: python
client = HazelcastClient(
cluster_name="cluster-name",
cluster_members=[
"10.90.0.2:5701",
"10.90.0.3:5701",
],
lifecycle_listeners=[
lambda state: print("Lifecycle event >>>", state),
]
)
Configuration (Asyncio)
~~~~~~~~~~~~~~~~~~~~~~~
.. code:: python
client = await HazelcastClient.create_and_start(
cluster_name="cluster-name",
cluster_members=[
"10.90.0.2:5701",
"10.90.0.3:5701",
],
lifecycle_listeners=[
lambda state: print("Lifecycle event >>>", state),
]
)
See the API documentation of :class:`hazelcast.client.HazelcastClient`
to learn more about supported configuration options.
Features
--------
- Distributed, partitioned and queryable in-memory key-value store
implementation, called **Map**
- Eventually consistent cache implementation to store a subset of the
Map data locally in the memory of the client, called **Near Cache**
- Additional data structures and simple messaging constructs such as
**Set**, **MultiMap**, **Queue**, **Topic**
- Cluster-wide unique ID generator, called **FlakeIdGenerator**
- Distributed, CRDT based counter, called **PNCounter**
- Distributed concurrency primitives from CP Subsystem such as
**FencedLock**, **Semaphore**, **AtomicLong**
- Integration with `Hazelcast Cloud `__
- Support for serverless and traditional web service architectures with
**Unisocket** and **Smart** operation modes
- Ability to listen to client lifecycle, cluster state, and distributed
data structure events
- and :ref:`many more`
.. toctree::
:hidden:
client
asyncio_client
config
api/modules
getting_started
getting_started_asyncio
features
configuration_overview
serialization
setting_up_client_network
client_connection_strategy
using_python_client_with_hazelcast
sql
securing_client_connection
development_and_testing
getting_help
contributing
license
copyright