Skip to main content

Python bindings for the Nominal Rust streaming client

Project description

nominal-streaming Python Bindings

nominal-streaming is a thin python wrapper around the existing nominal-streaming rust crate. Usage semantics remain largely the same, but with some slight alterations to allow for a more pythonic interface.

The library aims to balance three concerns:

  1. Data should exist in-memory only for a limited, configurable amount of time before it's sent to Core.
  2. Writes should fall back to disk if there are network failures.
  3. Backpressure should be applied to incoming requests when network throughput is saturated.

This library streams data to Nominal Core, to a file, or to Nominal Core with a file as backup (recommended to protect against network failures). It also provides configuration to manage the tradeoff between above listed concerns.

[!WARNING] This library is still under active development and may make breaking changes.

Usage example: streaming from memory to Nominal Core with file fallback

import pathlib
import time

from nominal.core import NominalClient
from nominal_streaming import NominalDatasetStream, PyNominalStreamOpts

if __name__ == "__main__":
    num_points = 100_000
    stream = (
        NominalDatasetStream(
            auth_header="<api key>",
            opts=PyNominalStreamOpts(),
        )
        .enable_logging("info") # can set debug, warn, etc.
        .with_core_consumer("<dataset rid>")
        .with_file_fallback(pathlib.Path("local_fallback.avro"))
    )

    with stream:
        # Stream 100_000 live readings (made up values)
        for idx in range(num_points):
            time_ns = int(time.time() * 1e9)
            value = (idx % 50) + 0.5
            stream.enqueue("channel_name", time_ns, value, tags={"tag_key": "tag_value"})

        # Stream 100_000 points in one batch
        start_time = int(time.time() * 1e9)
        timestamp_offsets = int(1e9 / 1600)
        timestamps = [start_time + timestamp_offsets * idx for idx in range(num_points)]
        values = [(idx % 50) + 0.5 for idx in range(num_points)]
        stream.enqueue_batch(
            "channel_name",
            timestamps,
            values,
            tags={"tag_key": "tag_value"}
        )

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

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

nominal_streaming-0.7.8-cp310-abi3-win_amd64.whl (3.2 MB view details)

Uploaded CPython 3.10+Windows x86-64

nominal_streaming-0.7.8-cp310-abi3-musllinux_1_2_x86_64.whl (3.7 MB view details)

Uploaded CPython 3.10+musllinux: musl 1.2+ x86-64

nominal_streaming-0.7.8-cp310-abi3-musllinux_1_2_armv7l.whl (3.2 MB view details)

Uploaded CPython 3.10+musllinux: musl 1.2+ ARMv7l

nominal_streaming-0.7.8-cp310-abi3-musllinux_1_2_aarch64.whl (3.5 MB view details)

Uploaded CPython 3.10+musllinux: musl 1.2+ ARM64

nominal_streaming-0.7.8-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.5 MB view details)

Uploaded CPython 3.10+manylinux: glibc 2.17+ x86-64

nominal_streaming-0.7.8-cp310-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (3.0 MB view details)

Uploaded CPython 3.10+manylinux: glibc 2.17+ ARMv7l

nominal_streaming-0.7.8-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (3.3 MB view details)

Uploaded CPython 3.10+manylinux: glibc 2.17+ ARM64

nominal_streaming-0.7.8-cp310-abi3-macosx_11_0_arm64.whl (3.0 MB view details)

Uploaded CPython 3.10+macOS 11.0+ ARM64

File details

Details for the file nominal_streaming-0.7.8-cp310-abi3-win_amd64.whl.

File metadata

File hashes

Hashes for nominal_streaming-0.7.8-cp310-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 491aed7305cff55e41ea73f8e830629ea420c8d4ccca3c0002bfbe135021f15c
MD5 813dd7de2d4fdcdeb38d55fe6e6b3186
BLAKE2b-256 16ad58a0dd44e760c9e31e69017d8c6940f75ee72d4a9044b4ee3d5f14adbd5e

See more details on using hashes here.

File details

Details for the file nominal_streaming-0.7.8-cp310-abi3-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for nominal_streaming-0.7.8-cp310-abi3-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 0820a09dbb2bfd4da40df410adc0217f92c6a1e4f9411a80da43d3a61324561e
MD5 4d71b7a1db6a43e36c8b21f0004fe0dd
BLAKE2b-256 198c26f5359dabdbe8d62166a93aa418938fa15ec03b71de96c74108c9dc8eca

See more details on using hashes here.

File details

Details for the file nominal_streaming-0.7.8-cp310-abi3-musllinux_1_2_armv7l.whl.

File metadata

File hashes

Hashes for nominal_streaming-0.7.8-cp310-abi3-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 3c902304ec8733874644e6e0df178d2def82269fa84e37e4323dc63c63481e1a
MD5 7c41ed9c70443b6e320838e5288847c5
BLAKE2b-256 e37bfe673e613b91c9efa897d0b612d4c5315a278d64eeddc818a619362d3fa1

See more details on using hashes here.

File details

Details for the file nominal_streaming-0.7.8-cp310-abi3-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for nominal_streaming-0.7.8-cp310-abi3-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 031f5e2a4a9a3222500addd90d850dae85039e7bcdb82cb403cb91052e53aa0a
MD5 9444b5a33abc890b7899b684bc21b1af
BLAKE2b-256 a50aa0b3be4f9c019bf2e9c96b97b7d60b21bd8907989adbfa35b36eceff6536

See more details on using hashes here.

File details

Details for the file nominal_streaming-0.7.8-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for nominal_streaming-0.7.8-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 aa4591a629f602da7d9c1ed1111cce8970c2fb1e00095d72a4ab9339278c1848
MD5 ee1368d56b5ffbc0fc2a41d6878c9c90
BLAKE2b-256 a3d3de1ce4b2c4f3c7de0f3dd8c33844cbeaf73e7be95e04fddaed96607b9c3c

See more details on using hashes here.

File details

Details for the file nominal_streaming-0.7.8-cp310-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl.

File metadata

File hashes

Hashes for nominal_streaming-0.7.8-cp310-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 0785c0712f9c6bf527901aec087d70a4f5189b711faa15d20b16461e7247672b
MD5 d187bffc6221a34b9f8583558b6cd86c
BLAKE2b-256 9848f502938f462627d51e9dc8c0b4e371266c0abcaed90b3c6f2b84062ad307

See more details on using hashes here.

File details

Details for the file nominal_streaming-0.7.8-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for nominal_streaming-0.7.8-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 31691fa7fc9ae99ffe9adcdb03cf88450b15812711bc827d66a22d3a62526cbe
MD5 7f1b0b537a6862a7b5cf304447e030d3
BLAKE2b-256 dcc7b0988c7fe96e20d697e6b238919d1cf5d911a09218da44b739acb5026acd

See more details on using hashes here.

File details

Details for the file nominal_streaming-0.7.8-cp310-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for nominal_streaming-0.7.8-cp310-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 a99e05e6be51e214076e26a8058276d7354b1471555314e488f0961b7ed72ae9
MD5 bee4d4aa18c6df88ee0f7f1a7b5dd653
BLAKE2b-256 5575a92600b8ffe088a2666ff1b13dedc12f9b128c0c9094e2ee0d1e6e688e65

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