Aleksmorshen commited on
Commit
7c6b9af
·
verified ·
1 Parent(s): 917aa6d

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +31 -11
app.py CHANGED
@@ -6,6 +6,7 @@ import threading
6
  import time
7
  from datetime import datetime
8
  from huggingface_hub import HfApi, hf_hub_download
 
9
 
10
  app = Flask(__name__)
11
  DATA_FILE = 'products.json'
@@ -20,19 +21,26 @@ logging.basicConfig(level=logging.DEBUG)
20
 
21
  # --- Функции для работы с JSON ---
22
  def load_data():
23
- """Загружает данные из JSON-файла."""
24
- if os.path.exists(DATA_FILE):
25
- try:
26
- with open(DATA_FILE, 'r', encoding='utf-8') as file:
27
- return json.load(file)
28
- except json.JSONDecodeError:
29
- logging.error("Ошибка: Невозможно декодировать JSON файл.")
30
- return []
31
- else:
32
- with open(DATA_FILE, 'w', encoding='utf-8') as file:
33
- json.dump([], file, ensure_ascii=False, indent=4)
 
 
 
 
 
 
34
  return []
35
 
 
36
  def save_data(data):
37
  """Сохраняет данные в JSON-файл."""
38
  try:
@@ -71,8 +79,12 @@ def download_db_from_hf():
71
  local_dir_use_symlinks=False
72
  )
73
  logging.info("JSON база успешно скачана из Hugging Face.")
 
 
 
74
  except Exception as e:
75
  logging.error(f"Ошибка при скачивании JSON базы: {e}")
 
76
 
77
  def periodic_backup():
78
  """Периодически вызывает функцию upload_db_to_hf() каждые 100 секунд."""
@@ -258,4 +270,12 @@ if __name__ == '__main__':
258
  backup_thread = threading.Thread(target=periodic_backup, daemon=True)
259
  backup_thread.start()
260
 
 
 
 
 
 
 
 
 
261
  app.run(debug=True, host='0.0.0.0', port=7860)
 
6
  import time
7
  from datetime import datetime
8
  from huggingface_hub import HfApi, hf_hub_download
9
+ from huggingface_hub.utils import RepositoryNotFoundError
10
 
11
  app = Flask(__name__)
12
  DATA_FILE = 'products.json'
 
21
 
22
  # --- Функции для работы с JSON ---
23
  def load_data():
24
+ """Загружает данные из JSON-файла или скачивает их из репозитория Hugging Face."""
25
+ try:
26
+ # Пытаемся скачать базу данных из Hugging Face
27
+ download_db_from_hf()
28
+ with open(DATA_FILE, 'r', encoding='utf-8') as file:
29
+ return json.load(file)
30
+ except FileNotFoundError:
31
+ logging.warning("Локальный файл базы данных не найден после скачивания.")
32
+ return []
33
+ except json.JSONDecodeError:
34
+ logging.error("Ошибка: Невозможно декодировать JSON файл.")
35
+ return []
36
+ except RepositoryNotFoundError:
37
+ logging.error("Репозиторий не найден. Создание локальной базы данных.")
38
+ return [] # Возвращаем пустой список, чтобы начать с пустой базы
39
+ except Exception as e:
40
+ logging.error(f"Произошла ошибка при загрузке данных: {e}")
41
  return []
42
 
43
+
44
  def save_data(data):
45
  """Сохраняет данные в JSON-файл."""
46
  try:
 
79
  local_dir_use_symlinks=False
80
  )
81
  logging.info("JSON база успешно скачана из Hugging Face.")
82
+ except RepositoryNotFoundError as e:
83
+ logging.error(f"Репозиторий не найден: {e}")
84
+ raise # Прокидываем исключение выше, чтобы load_data обработал его
85
  except Exception as e:
86
  logging.error(f"Ошибка при скачивании JSON базы: {e}")
87
+ raise # Прокидываем исключение выше, чтобы load_data обработал его
88
 
89
  def periodic_backup():
90
  """Периодически вызывает функцию upload_db_to_hf() каждые 100 секунд."""
 
270
  backup_thread = threading.Thread(target=periodic_backup, daemon=True)
271
  backup_thread.start()
272
 
273
+ # Попытка загрузить базу данных из репозитория перед запуском приложения
274
+ try:
275
+ load_data()
276
+ except Exception as e:
277
+ logging.error(f"Не удалось загрузить базу данных при запуске: {e}")
278
+ # Здесь можно добавить логику для создания пустой базы данных, если это необходимо
279
+ # Например: save_data([])
280
+
281
  app.run(debug=True, host='0.0.0.0', port=7860)