Edit on GitHub

src.scheduler.dump

Создание регулярного дампа

 1"""Создание регулярного дампа"""
 2
 3import logging
 4from datetime import datetime
 5from pathlib import Path
 6
 7from core.config import settings
 8from core.err import log_cash_error
 9from core.path import PATH
10from db.utils import dump
11
12logger = logging.getLogger("apscheduler")
13logging.getLogger("apscheduler.executors.default").setLevel(logging.WARNING)
14
15
16async def regular_dump():
17    """Создает регулярный дамп базы данных и управляет старыми дампами.
18
19    Эта функция выполняет создание дампа базы данных с помощью функции `dump`.
20    Затем она проверяет, превышает ли количество дампов максимальное количество,
21    установленное в конфигурации. Если да, то удаляет старые дампы.
22
23    Raises:
24        DumpError: Если произошла ошибка при создании дампа базы данных.
25    """
26    try:
27        await dump(regular=True)
28
29        folder_path = Path(PATH) / "src" / "db" / "dumps"
30
31        dumps = [
32            file
33            for file in folder_path.iterdir()
34            if file.is_file() and "regular" in file.name
35        ]
36
37        if len(dumps) > settings.max_dumps:
38            dumps = sorted(
39                dumps,
40                key=lambda file: datetime.strptime(
41                    file.name.split("dump")[-1].strip("_.sql"), "%d_%m_%Y-%H_%M"
42                ),
43            )
44            for _dump in dumps[: len(dumps) - settings.max_dumps]:
45                _dump.unlink()
46
47    except Exception as e:
48        if log_cash_error(e):
49            logger.exception("Ошибка создания регулярного дампа")
logger = <Logger apscheduler (INFO)>
async def regular_dump():
17async def regular_dump():
18    """Создает регулярный дамп базы данных и управляет старыми дампами.
19
20    Эта функция выполняет создание дампа базы данных с помощью функции `dump`.
21    Затем она проверяет, превышает ли количество дампов максимальное количество,
22    установленное в конфигурации. Если да, то удаляет старые дампы.
23
24    Raises:
25        DumpError: Если произошла ошибка при создании дампа базы данных.
26    """
27    try:
28        await dump(regular=True)
29
30        folder_path = Path(PATH) / "src" / "db" / "dumps"
31
32        dumps = [
33            file
34            for file in folder_path.iterdir()
35            if file.is_file() and "regular" in file.name
36        ]
37
38        if len(dumps) > settings.max_dumps:
39            dumps = sorted(
40                dumps,
41                key=lambda file: datetime.strptime(
42                    file.name.split("dump")[-1].strip("_.sql"), "%d_%m_%Y-%H_%M"
43                ),
44            )
45            for _dump in dumps[: len(dumps) - settings.max_dumps]:
46                _dump.unlink()
47
48    except Exception as e:
49        if log_cash_error(e):
50            logger.exception("Ошибка создания регулярного дампа")

Создает регулярный дамп базы данных и управляет старыми дампами.

Эта функция выполняет создание дампа базы данных с помощью функции dump. Затем она проверяет, превышает ли количество дампов максимальное количество, установленное в конфигурации. Если да, то удаляет старые дампы.

Raises:
  • DumpError: Если произошла ошибка при создании дампа базы данных.