tebakaja's picture
[ update ]: Change Redis Keyname
8c63991
import json
from typing import _ProtocolMeta
from restful.cutils.utilities import Utilities
from restful.schemas import ForecastingServiceSchema
""" Forecasting Service """
class ForecastingService:
__FORECAST_UTILS = Utilities()
async def forecasting(self, payload: ForecastingServiceSchema, caching: _ProtocolMeta) -> dict:
caching_data = caching.get(
f'CRYPTO_{payload.algorithm}_{payload.currency}_{payload.days}')
actuals, predictions = await self.__FORECAST_UTILS.forecasting_utils(
days = payload.days,
algorithm = payload.algorithm,
model_name = payload.currency,
with_pred = (caching_data == None),
sequence_length = 60
)
if caching_data != None:
predictions = json.loads(caching_data.decode('utf-8'))
else:
caching.set(
f'CRYPTO_{payload.algorithm}_{payload.currency}_{payload.days}',
json.dumps(predictions)
)
return {'actuals': actuals, 'predictions': predictions}