pumpwood_communication.microservices
Module microservice.py.
Class and functions to help communication between PumpWood like systems.
1"""Module microservice.py. 2 3Class and functions to help communication between PumpWood like systems. 4""" 5import io 6import gzip 7import pandas as pd 8import simplejson as json 9from pandas import ExcelWriter 10 11 12# Importing abstract classes for Micro Service 13from pumpwood_communication.microservice_abc.simple import ( 14 ABCSimpleBatchMicroservice, ABCSimpleRetriveMicroservice, 15 ABCSimpleDeleteMicroservice, ABCSimpleSaveMicroservice, 16 ABCSimpleListMicroservice, ABCSimpleDimensionMicroservice, 17 ABCSimpleActionMicroservice, ABCSimpleInfoMicroservice) 18from pumpwood_communication.microservice_abc.parallel import ( 19 ABCParallelActionMicroservice, ABCParallelDeleteMicroservice, 20 ABCParallelListMicroservice, ABCParallelRetriveMicroservice, 21 ABCParallelSaveMicroservice, ABCParallelBatchMicroservice) 22from pumpwood_communication.microservice_abc.system import ( 23 ABCSystemMicroservice, ABCPermissionMicroservice) 24 25 26class PumpWoodMicroService(ABCPermissionMicroservice, 27 ABCSystemMicroservice, 28 ABCSimpleBatchMicroservice, 29 ABCSimpleRetriveMicroservice, 30 ABCSimpleDeleteMicroservice, 31 ABCSimpleSaveMicroservice, 32 ABCSimpleListMicroservice, 33 ABCSimpleDimensionMicroservice, 34 ABCSimpleActionMicroservice, 35 ABCSimpleInfoMicroservice, 36 ABCParallelActionMicroservice, 37 ABCParallelDeleteMicroservice, 38 ABCParallelListMicroservice, 39 ABCParallelRetriveMicroservice, 40 ABCParallelSaveMicroservice, 41 ABCParallelBatchMicroservice): 42 """Class to define an inter-pumpwood MicroService. 43 44 Create an object ot help communication with Pumpwood based backends. It 45 manage login and token refresh if necessary. 46 47 It also implements parallel functions that split requests in parallel 48 process to reduce processing time. 49 """ 50 51 ######################## 52 # Parallel aux functions 53 def get_queue_matrix(self, queue_pk: int, auth_header: dict = None, 54 save_as_excel: str = None): 55 """Download model queue estimation matrix. In development...""" 56 file_content = self.retrieve_file( 57 model_class="ModelQueue", pk=queue_pk, 58 file_field="model_matrix_file", auth_header=auth_header, 59 save_file=False) 60 content = gzip.GzipFile( 61 fileobj=io.BytesIO(file_content["content"])).read() 62 data = json.loads(content.decode('utf-8')) 63 columns_info = pd.DataFrame(data["columns_info"]) 64 model_matrix = pd.DataFrame(data["model_matrix"]) 65 66 if save_as_excel is not None: 67 writer = ExcelWriter(save_as_excel) 68 columns_info.to_excel(writer, 'columns_info', index=False) 69 model_matrix.to_excel(writer, 'model_matrix', index=False) 70 writer.save() 71 else: 72 return { 73 "columns_info": columns_info, 74 "model_matrix": model_matrix}
class
PumpWoodMicroService(pumpwood_communication.microservice_abc.system.permission.ABCPermissionMicroservice, pumpwood_communication.microservice_abc.system.general.ABCSystemMicroservice, pumpwood_communication.microservice_abc.simple.batch.main.ABCSimpleBatchMicroservice, pumpwood_communication.microservice_abc.simple.retrieve.ABCSimpleRetriveMicroservice, pumpwood_communication.microservice_abc.simple.delete.ABCSimpleDeleteMicroservice, pumpwood_communication.microservice_abc.simple.save.ABCSimpleSaveMicroservice, pumpwood_communication.microservice_abc.simple.list.ABCSimpleListMicroservice, pumpwood_communication.microservice_abc.simple.dimensions.ABCSimpleDimensionMicroservice, pumpwood_communication.microservice_abc.simple.action.ABCSimpleActionMicroservice, pumpwood_communication.microservice_abc.simple.info.ABCSimpleInfoMicroservice, pumpwood_communication.microservice_abc.parallel.action.ABCParallelActionMicroservice, pumpwood_communication.microservice_abc.parallel.delete.ABCParallelDeleteMicroservice, pumpwood_communication.microservice_abc.parallel.list.ABCParallelListMicroservice, pumpwood_communication.microservice_abc.parallel.retrieve.ABCParallelRetriveMicroservice, pumpwood_communication.microservice_abc.parallel.save.ABCParallelSaveMicroservice, pumpwood_communication.microservice_abc.parallel.batch.ABCParallelBatchMicroservice):
27class PumpWoodMicroService(ABCPermissionMicroservice, 28 ABCSystemMicroservice, 29 ABCSimpleBatchMicroservice, 30 ABCSimpleRetriveMicroservice, 31 ABCSimpleDeleteMicroservice, 32 ABCSimpleSaveMicroservice, 33 ABCSimpleListMicroservice, 34 ABCSimpleDimensionMicroservice, 35 ABCSimpleActionMicroservice, 36 ABCSimpleInfoMicroservice, 37 ABCParallelActionMicroservice, 38 ABCParallelDeleteMicroservice, 39 ABCParallelListMicroservice, 40 ABCParallelRetriveMicroservice, 41 ABCParallelSaveMicroservice, 42 ABCParallelBatchMicroservice): 43 """Class to define an inter-pumpwood MicroService. 44 45 Create an object ot help communication with Pumpwood based backends. It 46 manage login and token refresh if necessary. 47 48 It also implements parallel functions that split requests in parallel 49 process to reduce processing time. 50 """ 51 52 ######################## 53 # Parallel aux functions 54 def get_queue_matrix(self, queue_pk: int, auth_header: dict = None, 55 save_as_excel: str = None): 56 """Download model queue estimation matrix. In development...""" 57 file_content = self.retrieve_file( 58 model_class="ModelQueue", pk=queue_pk, 59 file_field="model_matrix_file", auth_header=auth_header, 60 save_file=False) 61 content = gzip.GzipFile( 62 fileobj=io.BytesIO(file_content["content"])).read() 63 data = json.loads(content.decode('utf-8')) 64 columns_info = pd.DataFrame(data["columns_info"]) 65 model_matrix = pd.DataFrame(data["model_matrix"]) 66 67 if save_as_excel is not None: 68 writer = ExcelWriter(save_as_excel) 69 columns_info.to_excel(writer, 'columns_info', index=False) 70 model_matrix.to_excel(writer, 'model_matrix', index=False) 71 writer.save() 72 else: 73 return { 74 "columns_info": columns_info, 75 "model_matrix": model_matrix}
Class to define an inter-pumpwood MicroService.
Create an object ot help communication with Pumpwood based backends. It manage login and token refresh if necessary.
It also implements parallel functions that split requests in parallel process to reduce processing time.
def
get_queue_matrix( self, queue_pk: int, auth_header: dict = None, save_as_excel: str = None):
54 def get_queue_matrix(self, queue_pk: int, auth_header: dict = None, 55 save_as_excel: str = None): 56 """Download model queue estimation matrix. In development...""" 57 file_content = self.retrieve_file( 58 model_class="ModelQueue", pk=queue_pk, 59 file_field="model_matrix_file", auth_header=auth_header, 60 save_file=False) 61 content = gzip.GzipFile( 62 fileobj=io.BytesIO(file_content["content"])).read() 63 data = json.loads(content.decode('utf-8')) 64 columns_info = pd.DataFrame(data["columns_info"]) 65 model_matrix = pd.DataFrame(data["model_matrix"]) 66 67 if save_as_excel is not None: 68 writer = ExcelWriter(save_as_excel) 69 columns_info.to_excel(writer, 'columns_info', index=False) 70 model_matrix.to_excel(writer, 'model_matrix', index=False) 71 writer.save() 72 else: 73 return { 74 "columns_info": columns_info, 75 "model_matrix": model_matrix}
Download model queue estimation matrix. In development...