-
Notifications
You must be signed in to change notification settings - Fork 0
Description
Issue open by Roman Dyakov via telegram message.
#рефакторинг №2
https://apscheduler.readthedocs.io/en/3.x/userguide.html
-
Создать новый объкет щедулера как BlockingScheduler(), импортнуть его в
cliи запустить вместо текущего класса щедулера (так как щедулер блокирующий, после вызова start() весь остальной поток остановится и следующие функции выполнены не будут, это нормально). Сделать это лучше где-то в папке worker в отдельном файле. -
Настроить SQLAlchemyJobStore для хранения тасок, которые нужно запускать. Используй metadata, тогда новая таблица сгенерируется в алембике. Используй engine, тогда будешь использовать то же подключение, что и нужно для обычной работы (зачем их плодить, правда?). Импортни щедулер в файле конфигурации алембика, чтобы тот почувствовал какую миграцию нужно сделать. https://apscheduler.readthedocs.io/en/3.x/modules/jobstores/sqlalchemy.html
-
Создай джобу, которая будет раз в минуту проверять обновления. Лучше создать ее где-то в отдельном файле, который будет внутри папки worker. Эта джоба должна будет проверять отличие запланированных фетчеров и активных. Эту функцию можно импортнуть в тот файл, где создан щедулер, и подключить через add_job. Похоже на fastapi и его роутеры, правда?)
- Соответственно нужно будет еще 2 функции на создание и удаление этих фетчеров из списка запланированных тасок. Пока фетчер пусть будет пустой функцией в отдельном файле.
-
Создай функцию fetch, которая узнает что за тип фэтча ей нужно сделать и вызывает функцию типа фэтча. Кажется, для этого нужно будет сходить в БД или переписать функцию для щедулинга так, чтобы изначально планировала нужный вид фетча.
- Функция фетча должна создавать новую запись в БД метрик, эту логику можно оставить прямо в функции фетч, не вынося отдельно.
- Функция фетча должна отправлять алерт. Эту логику лучше вынести в отдельную функцию.
Metadata
Metadata
Assignees
Labels
Type
Projects
Status