Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

FunctionStream Python SDK

FunctionStream SDK is a powerful Python library for building and deploying serverless functions that process messages from Apache Pulsar. It provides a simple yet flexible framework for creating event-driven applications with robust error handling, metrics collection, and resource management.

Features

  • Easy Function Development: Simple API for creating serverless functions
  • Message Processing: Built-in support for Apache Pulsar message processing
  • Metrics Collection: Automatic collection of performance metrics
  • Resource Management: Efficient handling of connections and resources
  • Configuration Management: Flexible configuration through YAML files
  • Error Handling: Comprehensive error handling and logging

Installation

pip install function-stream

Quick Start

  1. Create a function that processes messages:
from function_stream import FSFunction

async def my_process_function(request_data: dict) -> dict:
    # Process the request data
    result = process_data(request_data)
    return {"result": result}

# Initialize and run the function
function = FSFunction(
    process_funcs={
        'my_module': my_process_function
    }
)

await function.start()
  1. Create a configuration file (config.yaml):
pulsar:
  service_url: "pulsar://localhost:6650"
  authPlugin: ""  # Optional
  authParams: ""  # Optional

module: "my_module"
subscriptionName: "my-subscription"

requestSource:
  - pulsar:
      topic: "input-topic"

sink:
  pulsar:
    topic: "output-topic"
  1. Define your function package (package.yaml):
name: my_function
type: pulsar
modules:
  my_module:
    name: my_process
    description: "Process incoming messages"
    inputSchema:
      type: object
      properties:
        data:
          type: string
      required:
        - data
    outputSchema:
      type: object
      properties:
        result:
          type: string

Core Components

FSFunction

The main class for creating serverless functions. It handles:

  • Message consumption and processing
  • Response generation
  • Resource management
  • Metrics collection
  • Error handling

Configuration

The SDK uses YAML configuration files to define:

  • Pulsar connection settings
  • Module selection
  • Topic subscriptions
  • Input/output topics
  • Custom configuration parameters

Metrics

Built-in metrics collection for:

  • Request processing time
  • Success/failure rates
  • Message throughput
  • Resource utilization

Examples

Check out the examples directory for complete examples:

  • string_function.py: A simple string processing function
  • test_string_function.py: Test client for the string function
  • config.yaml: Example configuration
  • package.yaml: Example package definition

Best Practices

  1. Error Handling

    • Always handle exceptions in your process functions
    • Use proper logging for debugging
    • Implement graceful shutdown
  2. Resource Management

    • Close resources properly
    • Use context managers when possible
    • Monitor resource usage
  3. Configuration

    • Use environment variables for sensitive data
    • Validate configuration values
    • Document configuration options
  4. Testing

    • Write unit tests for your functions
    • Test error scenarios
    • Validate input/output schemas

Development

Prerequisites

  • Python 3.7+
  • Apache Pulsar
  • pip

Setup Development Environment

# Create virtual environment
python -m venv venv
source venv/bin/activate  # Linux/Mac
# or
.\venv\Scripts\activate  # Windows

# Install dependencies
pip install -r requirements.txt

# Install the package in development mode
python -m pip install -e .

Running Tests

make test

Support

For support, please open an issue in the GitHub repository or contact the maintainers.

Metadata

Release files for function-stream 0.6.0rc2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for function-stream 0.6.0rc2
File Size Uploaded
function_stream-0.6.0rc2.tar.gz 19.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for function-stream 0.6.0rc2
File Interpreter ABI Platform
function_stream-0.6.0rc2-py3-none-any.whl Python 3 none any Details

Total release size: 33.7 kB

Release files / function_stream-0.6.0rc2.tar.gz

Download URL function_stream-0.6.0rc2.tar.gz
Size 19.2 kB
Tags Source
SHA-256 checksum
How to use checksums
dcaf51f8bc986402584ebeafc9186a735dc501227e298b2765b99a38b1d4481a
BLAKE2b-256 checksum
How to use checksums
2419f682bb391344c376a9a5d98ab7104ff9015e2d727735de643502bb25e3ad
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.1

Release files / function_stream-0.6.0rc2-py3-none-any.whl

Download URL function_stream-0.6.0rc2-py3-none-any.whl
Size 14.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
488c4036c064d22deb12ca84cd9841ada697fd1bd768f81ac45d1908444cf4ba
BLAKE2b-256 checksum
How to use checksums
eebe4f7f8d781baaa8adb3534a944ea2d093b32f56b53049e4f876c1b5dd9087
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.1

Release history Release notifications | RSS feed

This release

0.6.0rc2 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page