File size: 1,305 Bytes
08ca036 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
import time
from datetime import datetime
from utils.Logger import logger
limit_details = {}
def check_is_limit(detail, token, model):
if token and isinstance(detail, dict) and detail.get('clears_in'):
clear_time = int(time.time()) + detail.get('clears_in')
limit_details.setdefault(token, {})[model] = clear_time
logger.info(f"{token[:40]}: Reached {model} limit, will be cleared at {datetime.fromtimestamp(clear_time).replace(microsecond=0)}")
async def handle_request_limit(token, model):
try:
if limit_details.get(token) and model in limit_details[token]:
limit_time = limit_details[token][model]
is_limit = limit_time > int(time.time())
if is_limit:
clear_date = datetime.fromtimestamp(limit_time).replace(microsecond=0)
result = f"Request limit exceeded. You can continue with the default model now, or try again after {clear_date}"
logger.info(result)
return result
else:
del limit_details[token][model]
return None
except KeyError as e:
logger.error(f"Key error: {e}")
return None
except Exception as e:
logger.error(f"An unexpected error occurred: {e}")
return None
|