import requests import json from datetime import datetime, timedelta from BaseModels.mailSender import techSendMail from GeneralApp.temp_data_funcs import * def get_rate_nb_by_currency_code(code, date=None): from .nbrb.nbrb_currency_exchange import get_nbrb_rate_by_currency_code from .alfabank_api.alfabank_api_funcs import get_alfabank_nb_rate_by_currency_code if code == 'BYN': return 1 rate = None request_required = True try: tmp_rec = get_tmp_data('currency_rate', code) if tmp_rec and tmp_rec.json_data: if 'rate' in tmp_rec.json_data: # если с момента последнего импорта прошло меньше 30 минут - забираем курс из базы if datetime.strptime(tmp_rec.json_data['DT'], '%d.%m.%Y %H:%M') + timedelta( minutes=30) > datetime.now(): rate = tmp_rec.json_data['rate'] if not rate: # если с последней попытки меньше минуты - отдаем старый курс или None if tmp_rec.modifiedDT + timedelta(minutes=5) > datetime.now(): if 'rate' in tmp_rec.json_data: rate = tmp_rec.json_data['rate'] else: request_required = False if request_required: if not rate: rate = get_alfabank_nb_rate_by_currency_code(code) # if not rate: # rate = get_nbrb_rate_by_currency_code(code) tmp_rec.modifiedDT = datetime.now() tmp_rec.save() except Exception as e: msg = f'!!!!! --- get_rate_nb_by_currency_code error={str(e)}' print(msg) techSendMail(msg, 'tE get_rate_nb_by_currency_code error') return rate