Client
pingthings.timeseries.client.Client
¶
Client(loop: ClientEventLoop, client: AsyncClient)
Class that manages reusable state and client connections.
This class provides synchronous methods to connect to an asynchronous client, retrieve client and event loop information, and perform various client-related operations such as querying and streaming.
Info
For most users, this client connection will be the only necessary connection type to work with.
Queries are accelerated using the asynchronous methods under the hood. If for some reason you need to use
the asynchronous client, refer to pingthings.timeseries.async_client.
Create a synchronous client class that manages state for asynchronous client connections.
| PARAMETER | DESCRIPTION |
|---|---|
|
The event loop used by the client.
TYPE:
|
|
The asynchronous client instance.
TYPE:
|
| METHOD | DESCRIPTION |
|---|---|
connect |
Establish a synchronous connection to the asynchronous client. |
create |
Create a new stream. |
get_async_client |
Retrieve the asynchronous client instance. |
get_collection_properties |
Get properties of a collection. |
get_device |
Returns a device with a matching id in the device table. |
get_event_loop |
Retrieve the event loop instance. |
get_unit |
Returns a unit with a matching id in the unit table. |
info |
Retrieve information about the server and proxy server the client is connected to. |
list_collections |
Returns a list of collection paths using the |
list_devices |
Returns a list of devices the user has permission to see. |
list_units |
Returns a list of units generated in the database. |
set_collection_retention |
Set retention policy on a collection of streams. |
sql_query |
Performs a SQL query on the database metadata and returns a list of |
stream_from_uuid |
Retrieve a stream based on its UUID. |
streams_in_collection |
Search for streams matching given parameters |
streamset_from_uuids |
Return a |
| ATTRIBUTE | DESCRIPTION |
|---|---|
concurrency_limit |
The concurrency limit for background asynchronous operations.
|
Attributes¶
concurrency_limit
property
writable
¶
concurrency_limit
The concurrency limit for background asynchronous operations.
Setting the value overrides the environment variable
If you choose to set a custom concurrency_limit, this will bypass the environment variable PINGTHINGS_CONCURRENCY_LIMIT value.
Functions¶
connect
staticmethod
¶
connect(
profile: Optional[str] = None,
endpoint: Optional[str] = None,
apikey: Optional[str] = None,
concurrency_limit: Optional[int] = None,
) -> Client
Establish a synchronous connection to the asynchronous client.
| PARAMETER | DESCRIPTION |
|---|---|
|
The name of a profile containing the required connection information as found in the user's predictive grid credentials file |
|
The address and port of the cluster to connect to, e.g. |
|
The API key used to authenticate requests, if not set, the key is looked up from the environment variable |
|
The maximum number of concurrent database requests to have in flight at any one time, if not set, will be inferred from environment variable |
| RETURNS | DESCRIPTION |
|---|---|
Client
|
An instance of the Client class. |
Examples:
Connecting to the timeseries platform as a commercial customer in the PingThings provided JupyterHub/Lab environment. This behavior also works if you have the environment variables set, refer to the above docstring for more information.
import pingthings as pt
conn = pt.timeseries.connect()
Connecting to the timeseries platform when you know your api key and FQDN endpoint.
import pingthings as pt
my_key = "ABC123"
my_endpoint = "example.com:4411"
conn = pt.timeseries.connect(apikey=my_key, endpoint=my_endpoint)
Connecting to the platform when you have a populated ${HOME}/.predictivegrid/credentials.yaml file with profiles.
import pingthings as pt
conn = pt.timeseries.connect(profile='my_server')
create
¶
create(
uuid: UUID,
collection: str,
tags: Optional[dict[str, str]] = None,
annotations: Optional[dict[str, str]] = None,
) -> Stream
get_async_client
¶
get_async_client() -> AsyncClient
Retrieve the asynchronous client instance.
| RETURNS | DESCRIPTION |
|---|---|
AsyncClient
|
The asynchronous client instance. |
get_device
¶
get_event_loop
¶
get_event_loop() -> ClientEventLoop
Retrieve the event loop instance.
| RETURNS | DESCRIPTION |
|---|---|
ClientEventLoop
|
The event loop instance used by the client. |
get_unit
¶
info
¶
list_collections
¶
Returns a list of collection paths using the prefix argument for
filtering.
| PARAMETER | DESCRIPTION |
|---|---|
|
Filter collections that start with the string provided, if none passed, will list all collections.
DEFAULT:
|
| RETURNS | DESCRIPTION |
|---|---|
list[str]
|
All collections that match the provided prefix. |
Examples:
Assuming we have the following collections in the platform:
foo, bar, foo/baz, bar/baz
>>> conn = pt.connect()
>>> conn.list_collections().sort()
["bar", "bar/baz", "foo", "foo/bar"]
>>> conn.list_collections(prefix="foo")
["foo", "foo/bar"]
list_devices
¶
list_units
¶
set_collection_retention
¶
set_collection_retention(
collection: str,
override_per_stream: bool = False,
remove_older_than: Optional[datetime] = None,
) -> None
Set retention policy on a collection of streams.
| PARAMETER | DESCRIPTION |
|---|---|
|
The name of the collection.
|
|
Whether stream-specific retention policy should be overridden.
TYPE:
|
|
Trim time period - after which the data will get removed. Not specifying this parameter disables the trimming. |
Examples:
Keep the data for only one week.
>>> conn.set_collection_retention("bar", false, datetime.timedelta(days=7))
sql_query
¶
Performs a SQL query on the database metadata and returns a list of dictionaries from the resulting cursor.
| PARAMETER | DESCRIPTION |
|---|---|
|
A SQL statement to be executed on the BTrDB metadata. Available columns in the
TYPE:
|
|
A list of parameter values to be sanitized and interpolated into the SQL statement. Using parameters forces value/type checking and is considered a best practice at the very least. |
| RETURNS | DESCRIPTION |
|---|---|
list[Any]
|
The result of the SQL query. |
Available columns in the stream table
| column_name | data_type |
|---|---|
| uuid | uuid |
| collection | character varying |
| name | character varying |
| unit | character varying |
| ingress | character varying |
| property_version | bigint |
| annotations | hstore |
| distiller | character varying |
| created_at | timestamp with time zone |
| updated_at | timestamp with time zone |
| geo | postgis geometry |
| last_written | timestamp with time zone |
| previous_last_written | timestamp with time zone |
| estimated_count_delta | bigint |
| long_term_autoregressive_average | double precision |
| count_last_updated | timestamp with time zone |
| previous_count_last_updated | timestamp with time zone |
| watched | boolean |
stream_from_uuid
¶
streams_in_collection
¶
streams_in_collection(
collection: str = "",
is_collection_prefix: bool = True,
tags: Optional[dict[str, str]] = None,
annotations: Optional[dict[str, Any]] = None,
) -> StreamSet
Search for streams matching given parameters
| PARAMETER | DESCRIPTION |
|---|---|
|
collections to use when searching for streams, case sensitive.
TYPE:
|
|
Whether the collection is a prefix of the whole collection name.
TYPE:
|
|
The tags to identify the stream. |
|
The annotations to identify the stream. |
| RETURNS | DESCRIPTION |
|---|---|
StreamSet
|
The grouping of streams matching given parameters. |
streamset_from_uuids
¶
Return a StreamSet from an iterable of UUIDs.
| PARAMETER | DESCRIPTION |
|---|---|
|
List of stream identifiers |
|
Whether to fetch metadata for the streams in the set. Default is True.
TYPE:
|
Advanced user feature
Be cautious about using fetch_metadata=False. Many stream metadata values like collection, name, unit,
tags, annotations will not be available, meaning filtering and other operations that require metadata will
not work.
| RETURNS | DESCRIPTION |
|---|---|
StreamSet
|
The |
pingthings.timeseries.client.ClientEventLoop
¶
ClientEventLoop()
The object responsible for task running.
This leverages the asyncio event loop.
Are you sure you need to manually use this?
This object is automatically created and leveraged whenever you use the standard connect
or async_connect
| METHOD | DESCRIPTION |
|---|---|
run_coroutine_threadsafe |
A wrapper to run coroutines threadsafe. |