SIENTIAPDE-1084
Remove deprecated files and enhance documentation - Deleted `coverage.sh`, `docker-compose.yaml`, `Dockerfile`, and simulator-related files to streamline the project structure. - Updated `README.md` to provide a comprehensive overview of the OPC Ingestor, including features, architecture, installation, usage, and troubleshooting. - Enhanced docstrings across various classes and methods in the `ingestor` module for better clarity and maintainability. - Improved Prometheus metrics documentation in `metrics.py` to ensure proper monitoring and observability of the system.
This commit is contained in:
@@ -15,6 +15,29 @@ POD_ID = os.getenv("HOSTNAME", "localhost")
|
||||
|
||||
|
||||
async def main():
|
||||
"""
|
||||
Main asynchronous function that orchestrates the OPC Ingestor application.
|
||||
|
||||
This function performs the following operations:
|
||||
1. Starts the Prometheus metrics server for monitoring
|
||||
2. Initializes the Ingestor instance
|
||||
3. Prepares the ingestor (connects to services, acquires slot leases)
|
||||
4. Runs the main processing loop until shutdown is requested
|
||||
5. Handles graceful shutdown and cleanup
|
||||
|
||||
The main loop continuously:
|
||||
- Processes OPC data from subscribed tags
|
||||
- Manages slot leases and resource allocation
|
||||
- Monitors OPC server connections
|
||||
- Records metrics for monitoring and observability
|
||||
|
||||
Environment Variables:
|
||||
HOSTNAME: Pod identifier for metrics labeling (default: "localhost")
|
||||
HTTP_METRICS_PORT: Port for Prometheus metrics server (default: 9090)
|
||||
|
||||
Raises:
|
||||
Exception: If ingestor preparation fails, the application will exit
|
||||
"""
|
||||
start_prometheus_server()
|
||||
ingestor = Ingestor()
|
||||
try:
|
||||
@@ -62,11 +85,35 @@ async def main():
|
||||
|
||||
|
||||
def signal_handler(_signum, _frame):
|
||||
"""
|
||||
Signal handler for graceful application shutdown.
|
||||
|
||||
This function handles system signals (SIGINT, SIGTERM, SIGHUP) by setting
|
||||
the exit_signal flag, which triggers the main loop to complete its current
|
||||
iteration and then shut down gracefully.
|
||||
|
||||
Args:
|
||||
_signum: The signal number received
|
||||
_frame: The current stack frame (unused)
|
||||
"""
|
||||
print(f"Received signal {_signum}. Setting exit_signal flag.")
|
||||
exit_signal.set()
|
||||
|
||||
|
||||
def start_prometheus_server():
|
||||
"""
|
||||
Starts the Prometheus metrics HTTP server.
|
||||
|
||||
This function initializes a Prometheus metrics server on the configured port
|
||||
to expose application metrics for monitoring and alerting. The server provides
|
||||
metrics about application health, performance, and operational status.
|
||||
|
||||
Environment Variables:
|
||||
HTTP_METRICS_PORT: Port number for the metrics server (default: 9090)
|
||||
|
||||
Raises:
|
||||
Exception: If the server fails to start, the application will exit
|
||||
"""
|
||||
try:
|
||||
port = int(os.getenv("HTTP_METRICS_PORT", 9090))
|
||||
start_http_server(port)
|
||||
@@ -78,7 +125,15 @@ def start_prometheus_server():
|
||||
|
||||
|
||||
def run_async_main():
|
||||
"""Run the async main function with proper event loop setup"""
|
||||
"""
|
||||
Run the async main function with proper event loop setup.
|
||||
|
||||
This function sets up the asyncio event loop and runs the main async function.
|
||||
It handles KeyboardInterrupt gracefully and ensures proper cleanup of the event loop.
|
||||
|
||||
The function is designed to work with both direct execution and containerized
|
||||
environments, providing consistent behavior across different deployment scenarios.
|
||||
"""
|
||||
try:
|
||||
loop = asyncio.new_event_loop()
|
||||
asyncio.set_event_loop(loop)
|
||||
|
||||
Reference in New Issue
Block a user