"""Entry point for the TOF service."""importloggingfrompoiesis.api.tes.modelsimportTesOutputfrompoiesis.core.ports.message_brokerimportMessagefrompoiesis.core.services.filer.filerimportFilerfrompoiesis.core.services.filer.filer_strategy_factoryimportFilerStrategyFactorylogger=logging.getLogger(__name__)
[docs]classTof(Filer):"""Task output filer. Args: name: Name of the task. outputs: List of task outputs. Attributes: name: Name of the task. outputs: List of task outputs. message_broker: Message broker """def__init__(self,name:str,outputs:list[TesOutput])->None:"""Task output filer. Args: name: Name of the task. outputs: List of task outputs. Attributes: name: Name of the task. outputs: List of task outputs. message_broker: Message broker """super().__init__()self._name=nameself.outputs=outputs@propertydefname(self)->str:"""Name of the filer."""returnself._name
[docs]asyncdeffile(self)->None:"""Filing logic, upload. Raises: Exception: If the file cannot be uploaded. """foroutputinself.outputs:filer_strategy=FilerStrategyFactory.create_strategy(output.url,output)try:logger.info(f"Uploading output: {output}")awaitfiler_strategy.upload()exceptExceptionase:logger.error(f"TOF failed: {e}")self.message(Message(f"TOF failed: {e}"))raise