Remove deprecated files and configurations, including .env, Dockerfile, docker-compose.yml, and client-schedule.py. Update README.md to reflect new architecture and features, enhancing clarity on system capabilities and workflows. Adjust values.yaml for image tag and replica count, and improve code documentation across various modules for better maintainability.
58 lines
2.1 KiB
Python
58 lines
2.1 KiB
Python
from temporalio import workflow
|
|
|
|
with workflow.unsafe.imports_passed_through():
|
|
from scouter.activities.faker import Faker
|
|
from datetime import timedelta
|
|
from typing import Dict, Any
|
|
from sientia_do.temporal.policies import retry_policy
|
|
|
|
|
|
@workflow.defn(name="fake_data")
|
|
class FakeData:
|
|
"""
|
|
Test data generation workflow for development and testing purposes.
|
|
|
|
This workflow generates synthetic industrial sensor data and publishes it to
|
|
Kafka topics. It's designed for:
|
|
- Development and testing of data processing pipelines
|
|
- Load testing of downstream systems
|
|
- Demonstration of data flow patterns
|
|
- Validation of data quality filters and aggregation functions
|
|
|
|
The generated data simulates realistic industrial sensor readings with
|
|
configurable message counts and topic routing.
|
|
"""
|
|
|
|
@workflow.run
|
|
async def run(self, workflow_input: Dict[str, Any]) -> str:
|
|
"""
|
|
Execute the fake data generation workflow.
|
|
|
|
This method generates synthetic sensor data and publishes it to the specified
|
|
Kafka topic. The data includes realistic industrial sensor readings with
|
|
configurable parameters for testing and development purposes.
|
|
|
|
Args:
|
|
workflow_input (dict[str, Any]): Workflow configuration parameters.
|
|
Required fields:
|
|
- topic (str): Kafka topic name for data publication
|
|
- metadata (dict[str, Any], optional): Workflow execution metadata
|
|
- num_messages (int, optional): Number of messages to generate.
|
|
Defaults to random count between 1 and available sensor tags.
|
|
|
|
Returns:
|
|
str: Success confirmation message
|
|
|
|
Raises:
|
|
WorkflowExecutionError: If workflow execution fails
|
|
ActivityExecutionError: If data generation or Kafka publishing fails
|
|
"""
|
|
await workflow.execute_activity_method(
|
|
Faker.generate_and_send_data,
|
|
{
|
|
'topic': workflow_input['topic']
|
|
},
|
|
retry_policy=retry_policy,
|
|
start_to_close_timeout=timedelta(seconds=60)
|
|
)
|