Как выполнять функцию с определенной периодичностью без сброса после перезагрузки программы?
Доброго дня! Написал Телеграм бота на библиотеке aiogram. Одной из функций бота является то, что после запуска пользователем определенного процесса, бот каждые 2 часа выполняет необходимое действие и присылает уведомление юзеру. Для реализации данного функционала использую библиотеку aioschedule и работает все прекрасно, кроме одного момента - после перезагрузки бота все запущенные циклы сбрасываются. Можно ли придумать альтернативное решение, чтобы избежать данной проблемы?
После каждого выполнения необходимых действий складывай критичную информацию в базу и перепиши свой скрипт чтобы он работал с базой, тогда у тебя в любой момент будет актуальная информация.
К примеру тебе нужно каждые 2 часа прибавлять 3 к тому что раньше прибавлял. Тогда результат храни в базе и время последнего вызова(если нужно независимые от друг друга 2 часа ждать). При запуске бота забираешь данные из базы и стартуеш с этими значениями. В процессе работы - обновляешь эти значения в базе.
Надеюсь ход мыслей ясен, дальше творчество.
По сути я сейчас базу и использую. Для каждого пользователя, при запуске новой задачи, создается строка, в которой прописывается нулевое значение, к которому как раз с определенным интервалом прибавляется новое значение. Единственное, время выполнения у меня туда не записывается, вот с этим как раз можно и попробовать реализовать как то. Получается, останется добавить функцию, которая будет проверять запись в бд на наличие запущенной задачи, и эту функцию выполнять при старте бота?
zenondd, по сути надо при запуске бота заново инициализировать расписание в aioschedule, а для этого хранить его само в базе или генерировать из исходных данных заново.