diff --git a/api.py b/api.py index fb30646..04715cd 100644 --- a/api.py +++ b/api.py @@ -5,6 +5,7 @@ from datetime import datetime, timedelta from statistics import median from uuid import uuid4 from random import randint +from time import sleep # Fix 3.3 + 0.15 = 3.4499999999999997 from decimal import Decimal as d @@ -24,12 +25,20 @@ def token_check(token): else: return False +############## STATS ################## + +STAT_RUN = False def stat_run(cdm_change): # Общий баланс, среднее значение, медиана # Низшее значение, высшее значение # Изменение баланса и time2cdm # Прирост за счёт алмазов, за счёт time2cdm + # Защита от конфликтов + global STAT_RUN + while STAT_RUN: + sleep(1) + STAT_RUN = True # Получаем все балансы db = read() bals = [] @@ -72,6 +81,9 @@ def stat_run(cdm_change): stat[date] = stats write(stat, 'stat.json') + STAT_RUN = False + +####################### class User_in_db(BaseModel): token: str @@ -333,7 +345,6 @@ class Add_time(BaseModel): def add_time(it: Add_time): token, id, time = it.token, it.id, int(it.time) if token_check(token): - stat_run(0) course = read('conf.json')['time2cdm'] amount = time*course # Пополнение баланса @@ -353,6 +364,8 @@ def add_time(it: Add_time): stat = read('stat.json') stat[date]['time2cdm'] += amount write(stat, 'stat.json') + + stat_run(0) return 'OK' else: return 'Error' @@ -452,10 +465,12 @@ def get_time(it: Get_time2cdm): class Get_stat(BaseModel): token: str - date: Optional[str] = datetime.today().strftime('%Y-%m-%d') + date: Optional[str] = None @app.post('/api/get_stat/') def get_stat(it: Get_stat): token, date = it.token, it.date + if not date: + date = datetime.today().strftime('%Y-%m-%d') if token_check(token): stat_run(0) db = read('stat.json')