Basic Information¶
What it is¶
This is an Apache Ignite thin (binary protocol) client library, written in Python 3, abbreviated as pyignite.
Apache Ignite is a memory-centric distributed database, caching, and processing platform for transactional, analytical, and streaming workloads delivering in-memory speeds at petabyte scale.
Ignite binary client protocol provides user applications the ability to communicate with an existing Ignite cluster without starting a full-fledged Ignite node. An application can connect to the cluster through a raw TCP socket.
Prerequisites¶
- Python 3.6 or above (3.6, 3.7, 3.8 and 3.9 are tested),
- Access to Apache Ignite node, local or remote. The current thin client version was tested on Apache Ignite 2.10.0 (binary client protocol 1.7.0).
Installation¶
for end user¶
If you want to use pyignite in your project, you may install it from PyPI:
$ pip install pyignite
for developer¶
If you want to run tests, examples or build documentation, clone the whole repository:
$ git clone git@github.com:apache/ignite-python-thin-client.git
$ pip install -e .
This will install the repository version of pyignite into your environment in so-called “develop” or “editable” mode. You may read more about editable installs in the pip manual.
Then run through the contents of requirements folder to install the the additional requirements into your working Python environment using
$ pip install -r requirements/<your task>.txt
For development, it is recommended to install tests requirements
$ pip install -r requirements/tests.txt
For checking codestyle run:
$ flake8
You may also want to consult the setuptools manual about using setup.py.
Examples¶
Some examples of using pyignite are provided in examples folder. They are extensively commented in the Examples of usage section of the documentation.
This code implies that it is run in the environment with pyignite package installed, and Apache Ignite node is running on localhost:10800, unless otherwise noted.
There is also a possibility to run examples alone with tests. For the explanation of testing, look up the Testing section.
Testing¶
Create and activate virtualenv environment.
Install a binary release of Ignite with log4j2 enabled and set IGNITE_HOME environment variable.
$ cd <ignite_binary_release>
$ export IGNITE_HOME=$(pwd)
$ cp -r $IGNITE_HOME/libs/optional/ignite-log4j2 $IGNITE_HOME/libs/
Run
$ pip install -e .
$ pytest
Other pytest parameters:
--examples
− run the examples as one test. If you wish to run only
the examples, supply also the name of the test function to pytest launcher:
$ pytest --examples ../tests/test_examples.py::test_examples
In this test assertion fails if any of the examples’ processes ends with non-zero exit code.
Examples are not parameterized for the sake of simplicity. They always run with default parameters (host and port) regardless of any other pytest option.
Since failover, SSL and authentication examples are meant to be controlled by user or depend on special configuration of the Ignite cluster, they can not be automated.
Documentation¶
To recompile this documentation, do this from your virtualenv environment:
$ pip install -r requirements/docs.txt
$ cd docs
$ make html
Then open docs/generated/html/index.html in your browser.
If you feel that old version is stuck, do
$ make clean
$ sphinx-apidoc -feM -o source/ ../ ../setup.py
$ make html
And that should be it.
Licensing¶
This is a free software, brought to you on terms of the Apache License v2.