А вот я попробовал, и мне понравилось.
Сейчас так:
при старте бота из базы берутся все таски и add_job добавляются в apscheduler.
при выполнении таска удаляется строчка в базе
при добавлении таска - добавляется в apscheduler, и в базу.
таким образом даже при ресете бот при повторном старте из базы заберёт невыполненные таски.
Да, пожалуй без ежесекундной долбёжки в базу это как-то более современно выглядит.