Transport classes and utilities shared among Python Elastic client libraries
Project description
elastic-transport-python
Transport classes and utilities shared among Python Elastic client libraries
This library was lifted from elasticsearch-py
and then transformed to be used across all Elastic services
rather than only Elasticsearch.
Installing from PyPI
$ python -m pip install elastic-transport
Versioning follows the major and minor version of the Elastic Stack version and the patch number is incremented for bug fixes within a minor release.
User Guide
For almost all use-cases you should not need this library. The below use-cases are the common ones:
Creating your own Node Class
If you need to have custom behavior for a Node
you can subclass the
base node class you want and then pass the class in via node_class
:
from elastic_transport import Urllib3HttpNode
from elastic_enterprise_search import EnterpriseSearch
class CustomHttpNode(Urllib3HttpNode):
def perform_request(
self,
method,
target,
body=None,
request_timeout=DEFAULT,
ignore_status=(),
headers=None,
): ... # Custom HTTP behavior
# Create the Client with 'node_class' defined
client = EnterpriseSearch(
...,
node_class=CustomHttpNode
)
The above also works for NodePool
(via node_pool_class
) and Transport
(via transport_class
).
Nodes
A node describes a single instance of a service within a potentially larger cluster.
elastic-transport-python
supports two HTTP client libraries:
Urllib3HttpNode
This is the default node class. This node class uses urllib3 to issue requests.
RequestsHttpNode
This node class requires the Requests library to be installed to use:
$ python -m pip install requests
This class is often useful when using libraries that integrate with Requests. Read more about Requests on Read the Docs.
Supported Node Options
The two node classes support a variety of options, some node classes only support a subset of the total options:
Option | Description | Default | Supported by urllib3 | Supported by requests |
---|---|---|---|---|
host | TCP host to connect | localhost | ✓ | ✓ |
port | TCP port to connect | ✓ | ✓ | |
use_ssl | Should connect via TLS/SSL? | False | ✓ | ✓ |
url_prefix | Path prefix for all requests | "" | ✓ | ✓ |
request_timeout | Default request timeout | 10.0 | ✓ | ✓ |
headers | HTTP headers to add to every request | {} | ✓ | ✓ |
user_agent | Default User-Agent HTTP header | None | ✓ | ✓ |
connections_per_node | Number of HTTP connections per Node | 10 | ✓ | |
verify_certs | Whether to verify server certificate | True | ✓ | ✓ |
ca_certs | CA certificates to use with TLS/SSL | certifi | ✓ | ✓ |
client_cert | Client certificate to present during TLS/SSL handshake | None | ✓ | ✓ |
client_key | Client certificate key that goes with client_cert | None | ✓ | ✓ |
ssl_version | Version of TLS/SSL to use | None | ✓ | |
ssl_assert_hostname | Host to verify on the server TLS certificate. Set to False to disable certificate hostname verification | None | ✓ | |
ssl_assert_fingerprint | Checksum to verify against the server TLS certificate | None | ✓ | |
ssl_context | Preconfigured SSLContext instance | None | ✓ |
License
elastic-transport-python
is available under the Apache-2.0 license.
For more details see LICENSE.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for elastic-transport-8.0.0a3.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 609592aa2471b3ac388222aec15e7d2eb2cb5dc837df091b716ec81fe98c2e73 |
|
MD5 | 1f3e82b5fe3a0489e31bd420a07d9dd8 |
|
BLAKE2b-256 | 7a2867da6b77ca2ea99c2d5f98dcc91546babbe21e9336757abc3fb3b3899c6b |
Hashes for elastic_transport-8.0.0a3-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | cdbbfe255bb8523edf46fc4a7a18afbd2274ce66bbccd92296d56a297a9e30ae |
|
MD5 | 67b0ef8c738884015475a67e70e6acb7 |
|
BLAKE2b-256 | 5cbd54736f048a947b00d1bb35d5383d001acf7806f907caeba4f45615b0a033 |