SIENTIAPDE-1318
Refactor project structure and update configurations - Deleted the empty `__init__.py` file to clean up the project structure. - Renamed the project from "laborious" to "ingestor" in `pyproject.toml`, updating the description accordingly. - Improved type hints and conditional checks in the `Ingestor`, `DataManager`, `IngestorManager`, and `OpcManager` classes for better code clarity and type safety. - Enhanced error handling and assertions in various methods to ensure robustness. - Updated unit tests to reflect changes in class names and error handling improvements.
This commit is contained in:
@@ -72,12 +72,7 @@ class Ingestor:
|
||||
"""
|
||||
|
||||
kafka_servers = getenv('KAFKA_SERVERS', 'localhost:9092')
|
||||
export_to_kafka = getenv('EXPORT_TO_KAFKA', 'false')
|
||||
|
||||
if export_to_kafka and export_to_kafka == 'true':
|
||||
export_to_kafka = True
|
||||
else:
|
||||
export_to_kafka = False
|
||||
export_to_kafka: bool = getenv('EXPORT_TO_KAFKA', 'false') == 'true'
|
||||
|
||||
self.export_to_kafka = export_to_kafka
|
||||
self.redis_host = getenv('REDIS_HOST', 'localhost')
|
||||
@@ -110,7 +105,7 @@ class Ingestor:
|
||||
'schema_name': 'opc_ingestor',
|
||||
'pod_id': self.pod_id,
|
||||
}
|
||||
self.ingestor_manager = None
|
||||
self.ingestor_manager: IngestorManager | None = None
|
||||
|
||||
async def shutdown(self):
|
||||
"""
|
||||
@@ -150,8 +145,9 @@ class Ingestor:
|
||||
|
||||
else:
|
||||
# Subscribe to acquired slots
|
||||
self.ingestor_manager.update_opc_servers()
|
||||
await self.ingestor_manager.subscribe_to_tags(acquired)
|
||||
if self.ingestor_manager:
|
||||
self.ingestor_manager.update_opc_servers()
|
||||
await self.ingestor_manager.subscribe_to_tags(acquired)
|
||||
|
||||
async def prepare_ingestor(self):
|
||||
"""
|
||||
@@ -173,7 +169,7 @@ class Ingestor:
|
||||
"""
|
||||
|
||||
self.ingestor_manager = IngestorManager(
|
||||
kafka_servers=self.kafka_servers,
|
||||
kafka_servers=','.join(self.kafka_servers),
|
||||
redis_data={
|
||||
'host': self.redis_host,
|
||||
'port': self.redis_port,
|
||||
@@ -190,6 +186,7 @@ class Ingestor:
|
||||
notification_handler=self.notification_handler,
|
||||
export_to_kafka=self.export_to_kafka,
|
||||
)
|
||||
assert self.ingestor_manager is not None
|
||||
|
||||
# Declare ingestor active
|
||||
self.ingestor_manager.declare_active()
|
||||
@@ -221,7 +218,7 @@ class Ingestor:
|
||||
- Requests a single slot lease to begin processing
|
||||
"""
|
||||
|
||||
if not self.ingestor_manager.managed_tags and number_of_slots > 0:
|
||||
if self.ingestor_manager and not self.ingestor_manager.managed_tags and number_of_slots > 0:
|
||||
# This ingestor is active and has no slots, so we need to try to
|
||||
|
||||
# Get slot lease
|
||||
@@ -250,6 +247,8 @@ class Ingestor:
|
||||
- Logs the number of available slots when attempting to acquire leases.
|
||||
- Logs the number of extra slots when releasing leases.
|
||||
"""
|
||||
if not self.ingestor_manager:
|
||||
return
|
||||
|
||||
if available_slots > 0 and lacking_ingestors > 0:
|
||||
# Some ingestors are inactive, so there are "available_slots" slots available
|
||||
@@ -297,6 +296,9 @@ class Ingestor:
|
||||
- Updates metrics to reflect current state
|
||||
"""
|
||||
|
||||
if not self.ingestor_manager:
|
||||
return
|
||||
|
||||
self.logger.debug(f'Current managed tags: {self.ingestor_manager.managed_tags}')
|
||||
|
||||
await self.ingestor_manager.update_opc_servers()
|
||||
@@ -361,6 +363,9 @@ class Ingestor:
|
||||
and OPC servers.
|
||||
"""
|
||||
|
||||
if not self.ingestor_manager:
|
||||
return
|
||||
|
||||
self.ingestor_manager.declare_active()
|
||||
|
||||
self.logger.info('Polling for slot updates...')
|
||||
|
||||
Reference in New Issue
Block a user