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
- 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()
- 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"
- 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 functiontest_string_function.py: Test client for the string functionconfig.yaml: Example configurationpackage.yaml: Example package definition
Best Practices
-
Error Handling
- Always handle exceptions in your process functions
- Use proper logging for debugging
- Implement graceful shutdown
-
Resource Management
- Close resources properly
- Use context managers when possible
- Monitor resource usage
-
Configuration
- Use environment variables for sensitive data
- Validate configuration values
- Document configuration options
-
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)
| File | Size | Uploaded | |
|---|---|---|---|
| function_stream-0.6.0rc2.tar.gz | 19.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| 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
|