Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Распилить планировщик #31

Open
7 tasks
viribus-issue-bot opened this issue Aug 23, 2024 · 0 comments
Open
7 tasks

Распилить планировщик #31

viribus-issue-bot opened this issue Aug 23, 2024 · 0 comments

Comments

@viribus-issue-bot
Copy link

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, которая узнает что за тип фэтча ей нужно сделать и вызывает функцию типа фэтча. Кажется, для этого нужно будет сходить в БД или переписать функцию для щедулинга так, чтобы изначально планировала нужный вид фетча.

    • Функция фетча должна создавать новую запись в БД метрик, эту логику можно оставить прямо в функции фетч, не вынося отдельно.
    • Функция фетча должна отправлять алерт. Эту логику лучше вынести в отдельную функцию.
@github-project-automation github-project-automation bot moved this to Backlog in Viribus Team Aug 23, 2024
@viribus-issue-bot viribus-issue-bot closed this as not planned Won't fix, can't repro, duplicate, stale Oct 9, 2024
@github-project-automation github-project-automation bot moved this from Backlog to Done in Viribus Team Oct 9, 2024
@github-project-automation github-project-automation bot moved this from Done to Backlog in Viribus Team Oct 9, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
Status: Backlog
Development

No branches or pull requests

1 participant