Skip to main content

Python server SDK for streaming data into Streamstraight.

Project description

Streamstraight Python SDK

streamstraight-server mirrors the @streamstraight/server Node SDK for producers who prefer Python. It connects to Streamstraight over Socket.IO, manages chunk acknowledgements, and exposes helpers for minting client JWTs.

Quickstart

uv add streamstraight-server

Usage

Streamstraight needs a unique stream_id for every stream you produce. Once connected, you can either push chunks manually with the writer API or hand us an async iterator/object that yields JSON‑serializable chunks. The writer reuses the most recent stream configuration, so call await server.connect({...}) again if you need to swap streams or override the encoder.

Push chunks with the writer context manager

import asyncio
from collections.abc import AsyncIterator

from streamstraight_server import streamstraight_server


async def generate() -> AsyncIterator[str]:
    yield "first"
    yield "second"


async def main() -> None:
    server = await streamstraight_server(
        {"api_key": "YOUR_STREAMSTRAIGHT_API_KEY"},
        {"stream_id": "your-stream-id"},
    )  # connects and configures the stream

    async with server.stream_writer() as writer:
        async for chunk in generate():
            await writer.send(chunk)  # returns an asyncio.Future you can await later if needed
            # You can optionally mirror the same chunks to your HTTP response here.

asyncio.run(main())

Pipe an async iterator directly

import asyncio
from streamstraight_server import streamstraight_server


async def generate():
    # Replace with your LLM or other async generator
    yield {"content": "first chunk"}
    yield {"content": "second chunk"}


async def main() -> None:
    server = await streamstraight_server(
        {"api_key": "YOUR_STREAMSTRAIGHT_API_KEY"},
        {"stream_id": "your-stream-id"},
    )

    await server.stream(generate())

asyncio.run(main())

Mint a client JWT for your browser client

from streamstraight_server import fetch_client_token

token = await fetch_client_token({"api_key": "YOUR_STREAMSTRAIGHT_API_KEY"})

Logging

The SDK defaults to logging only errors. To see more detailed logs (useful for debugging connection issues), you can adjust the log level:

import logging

# Set to INFO to see connection attempts and stream lifecycle
logging.getLogger("streamstraight_server").setLevel(logging.INFO)

# Set to DEBUG to see all internal operations
logging.getLogger("streamstraight_server").setLevel(logging.DEBUG)

# Disable SDK logging entirely
logging.getLogger("streamstraight_server").setLevel(logging.CRITICAL)

Project details


Download files

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

Source Distribution

streamstraight_server-0.2.9.tar.gz (15.9 kB view details)

Uploaded Source

Built Distribution

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

streamstraight_server-0.2.9-py3-none-any.whl (12.8 kB view details)

Uploaded Python 3

File details

Details for the file streamstraight_server-0.2.9.tar.gz.

File metadata

File hashes

Hashes for streamstraight_server-0.2.9.tar.gz
Algorithm Hash digest
SHA256 b4c41c0f06f23fe8c2b0de0ada6f36689c941b5365300d4cb45a0000c8190ae3
MD5 f5aa40e040c897d9277a86df487a84f6
BLAKE2b-256 0b83b8c77a82760169d6fde4ef3db0bf393c7f5174b65b4cac1d34fbbe6d8c13

See more details on using hashes here.

File details

Details for the file streamstraight_server-0.2.9-py3-none-any.whl.

File metadata

File hashes

Hashes for streamstraight_server-0.2.9-py3-none-any.whl
Algorithm Hash digest
SHA256 1c19d2acb8d3e27009129f65368f752efc1d5b856bfc2ec8b2580bbd246513b4
MD5 cc9158ac3d4fa683a204422791df2001
BLAKE2b-256 0d00319fe03ffcefdaadc307f22cbb7a8f5681e41e1c46351de709b28bccb521

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