Aleksmorshen commited on
Commit
f2be54a
·
verified ·
1 Parent(s): e88984a

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +11 -10
app.py CHANGED
@@ -16,16 +16,17 @@ DB_FILENAME = "auth_system.db"
16
  HF_TOKEN_WRITE = os.getenv("HF_TOKEN") # Токен для записи (загрузки)
17
  HF_TOKEN_READ = os.getenv("HF_TOKEN_READ") # Токен для чтения (скачивания)
18
 
19
- # Глобальные переменные для подключения к базе данных.
20
  conn = None
21
  c = None
22
 
23
  def init_db_connection():
24
- """Открывает новое соединение с базой данных и сохраняет его в глобальных переменных."""
25
  global conn, c
26
  if conn is not None:
27
  conn.close()
28
- conn = sqlite3.connect(DB_FILENAME, check_same_thread=False)
 
29
  c = conn.cursor()
30
 
31
  # --- Создание таблиц, если они не существуют ---
@@ -112,10 +113,13 @@ def upload_db_to_hf():
112
 
113
  # --- Функция периодического резервного копирования ---
114
  def periodic_backup():
115
- """Запускает бесконечный цикл резервного копирования с интервалом в 15 секунд."""
 
 
 
116
  while True:
117
  upload_db_to_hf()
118
- time.sleep(1800)
119
 
120
  # --- Вспомогательные функции ---
121
  def generate_token():
@@ -398,7 +402,6 @@ def main():
398
  download_success = download_db_from_hf()
399
  if download_success:
400
  st.success("База данных успешно скачана из Hugging Face!")
401
- # Изменяем права доступа, чтобы база стала доступна для записи
402
  try:
403
  os.chmod(DB_FILENAME, 0o666)
404
  st.info("Права доступа к базе данных изменены (read-write).")
@@ -414,7 +417,7 @@ def main():
414
  # Переинициализируем соединение с базой данных после изменения прав доступа
415
  init_db_connection()
416
 
417
- # Проверка существования таблицы "users"
418
  try:
419
  c.execute("SELECT * FROM users LIMIT 1")
420
  except sqlite3.OperationalError as e:
@@ -436,7 +439,6 @@ def main():
436
  if st.session_state.logged_in:
437
  st.sidebar.title(f"Привет, {st.session_state.username}!")
438
  option = st.sidebar.selectbox("Выберите действие", ["Добавить товар", "Отпуск товара", "Редактировать товары", "Отчет за месяц", "Выйти"])
439
-
440
  if option == "Добавить товар":
441
  add_product()
442
  elif option == "Отпуск товара":
@@ -459,8 +461,7 @@ def main():
459
 
460
  if __name__ == "__main__":
461
  main()
462
- # Ждем 15 секунд после скачивания/инициализации базы данных
463
  time.sleep(15)
464
- # Запускаем фоновый поток резервного копирования
465
  backup_thread = threading.Thread(target=periodic_backup, daemon=True)
466
  backup_thread.start()
 
16
  HF_TOKEN_WRITE = os.getenv("HF_TOKEN") # Токен для записи (загрузки)
17
  HF_TOKEN_READ = os.getenv("HF_TOKEN_READ") # Токен для чтения (скачивания)
18
 
19
+ # Глобальные переменные для подключения к базе данных
20
  conn = None
21
  c = None
22
 
23
  def init_db_connection():
24
+ """Открывает новое соединение с базой данных с увеличенным таймаутом."""
25
  global conn, c
26
  if conn is not None:
27
  conn.close()
28
+ # Устанавливаем timeout=30 секунд, чтобы операции ожидали освобождения блокировки
29
+ conn = sqlite3.connect(DB_FILENAME, check_same_thread=False, timeout=30)
30
  c = conn.cursor()
31
 
32
  # --- Создание таблиц, если они не существуют ---
 
113
 
114
  # --- Функция периодического резервного копирования ---
115
  def periodic_backup():
116
+ """
117
+ Запускает бесконечный цикл резервного копирования с интервалом в 30 минут.
118
+ Здесь не используются глобальные подключения, поскольку функция только читает файл.
119
+ """
120
  while True:
121
  upload_db_to_hf()
122
+ time.sleep(1800) # 30 минут = 1800 секунд
123
 
124
  # --- Вспомогательные функции ---
125
  def generate_token():
 
402
  download_success = download_db_from_hf()
403
  if download_success:
404
  st.success("База данных успешно скачана из Hugging Face!")
 
405
  try:
406
  os.chmod(DB_FILENAME, 0o666)
407
  st.info("Права доступа к базе данных изменены (read-write).")
 
417
  # Переинициализируем соединение с базой данных после изменения прав доступа
418
  init_db_connection()
419
 
420
+ # Проверка наличия таблицы "users". Если отсутствует, создаём таблицы.
421
  try:
422
  c.execute("SELECT * FROM users LIMIT 1")
423
  except sqlite3.OperationalError as e:
 
439
  if st.session_state.logged_in:
440
  st.sidebar.title(f"Привет, {st.session_state.username}!")
441
  option = st.sidebar.selectbox("Выберите действие", ["Добавить товар", "Отпуск товара", "Редактировать товары", "Отчет за месяц", "Выйти"])
 
442
  if option == "Добавить товар":
443
  add_product()
444
  elif option == "Отпуск товара":
 
461
 
462
  if __name__ == "__main__":
463
  main()
464
+ # Ждем 15 секунд после инициализации базы данных, затем запускаем фоновый поток резервного копирования
465
  time.sleep(15)
 
466
  backup_thread = threading.Thread(target=periodic_backup, daemon=True)
467
  backup_thread.start()