Size: a a a

2020 July 25

F

Fᴏʀᴅᴇɴ in aiogram [ru]
зачем?
источник

Т

Технопёс in aiogram [ru]
чем не угодили JobStore?
источник

D•

Dan • Captain in aiogram [ru]
Коллеги, вы задаёте мне вопросы странного порядка. Я поясню: я трогаю это второй или третий день. Я не занимался этим ранее. И мои представления о шедулерах в асинхронном питоне только проясняются с чтением нужных глав документации.
источник

F

Fᴏʀᴅᴇɴ in aiogram [ru]
ща прочитаю весь тред и скажу
источник

D•

Dan • Captain in aiogram [ru]
Сейчас в базе просто стейты, а таски в jobstore. До этого да, дёргал базу
источник

Т

Технопёс in aiogram [ru]
я читал первую длинную постяру, но так и не понял в чём вопрос. Можно как то сжать до сути? Какова задача?
источник

F

Fᴏʀᴅᴇɴ in aiogram [ru]
Dan • Captain
У меня есть вопрос к тем, кто имеет большой опыт по apscheduler :)
Ранее, в доасинхронные времена у меня были самописные таймеры. Но сейчас apscheduler позволяет творить некоторую магию. Но вот проблема в чём... мне кажется (да я даже уверен), что я делаю очень неправильно:
есть в базе список задач с несколькими полями (id, описание, datetime исполнения). есть таймер (в моём случае apscheduler с add_job) дёргать раз в секунду асинхронный метод — запрос в базу одной (из возможных) задач order by datetime asc limit 1 :)
это я делаю для того, чтобы была возможность добавлять N задач в самое разнообразное время исполнения, и хранить статусы состояний этих задач, что конечно удобно.
Всё это разумеется в боте, потому что и добавление задач и их исполнение завязано на нём.

Но здесь я руководствовался своими довольно старыми представлениями о работе подобных систем. Есть ли более изящный и грациозный способ управления потенциально огромным количеством задач для исполнения в самое разнообразное время?
грациозный способ - добавлять все внутри бота
внутри таски редактировать ее состояние, например в редисе (с использованием ttl, чтобы базу не засорять)
добавил таск с помощью шедулера, а потом он его спокойно выгоняет
apsscheduler умеет все что тебе нужно внутри одной проги и своими собственными методами
источник

F

Fᴏʀᴅᴇɴ in aiogram [ru]
Технопёс
я читал первую длинную постяру, но так и не понял в чём вопрос. Можно как то сжать до сути? Какова задача?
отслеживать прогресс выполнения тасок походу
источник

D•

Dan • Captain in aiogram [ru]
Отложенное выполнение команд ботом по расписанию.
Добавляю например вызов mdstat на какое-то конкретное время, или делаю вызов smartctl
источник

D•

Dan • Captain in aiogram [ru]
Fᴏʀᴅᴇɴ
грациозный способ - добавлять все внутри бота
внутри таски редактировать ее состояние, например в редисе (с использованием ttl, чтобы базу не засорять)
добавил таск с помощью шедулера, а потом он его спокойно выгоняет
apsscheduler умеет все что тебе нужно внутри одной проги и своими собственными методами
В итоге я к этому и пришёл, да :)
источник

D•

Dan • Captain in aiogram [ru]
Только со стораджем для jobstore осталось понять что наиболее оптимально
источник

F

Fᴏʀᴅᴇɴ in aiogram [ru]
Dan • Captain
В итоге я к этому и пришёл, да :)
не совсем
источник

D•

Dan • Captain in aiogram [ru]
Fᴏʀᴅᴇɴ
не совсем
Мне в базе в любом случае нужно писать логи, поэтому совсем отказаться от неё не смогу. А вот дублирование jobstore оттуда уберу, да
источник

F

Fᴏʀᴅᴇɴ in aiogram [ru]
Dan • Captain
А вот я попробовал, и мне понравилось.
Сейчас так:
при старте бота из базы берутся все таски и add_job добавляются в apscheduler.
при выполнении таска удаляется строчка в базе
при добавлении таска - добавляется в apscheduler, и в базу.
таким образом даже при ресете бот при повторном старте из базы заберёт невыполненные таски.

Да, пожалуй без ежесекундной долбёжки в базу это как-то более современно выглядит.
запись в базу избыточна
apsscheduler устойчив к перезапускам и достаточно выбрать правильный jobstore (например ту же базу)
так ты не будешь дублировать данные и ничего не потеряешь
источник

D•

Dan • Captain in aiogram [ru]
Правильным jobstore может стать redis ведь?
Что-то мне подсказывает что пихать в pgsql и jobstore тоже не совсем корректно
источник

D•

Dan • Captain in aiogram [ru]
Но спасибо за векторы и направления. Чем больше в асинхронном питоне, тем интереснее :)
источник

F

Fᴏʀᴅᴇɴ in aiogram [ru]
Dan • Captain
Правильным jobstore может стать redis ведь?
Что-то мне подсказывает что пихать в pgsql и jobstore тоже не совсем корректно
да, именно
источник

F

Fᴏʀᴅᴇɴ in aiogram [ru]
а логи писать в базу...
источник

F

Fᴏʀᴅᴇɴ in aiogram [ru]
ну такое себе решение на самом деле
источник

D•

Dan • Captain in aiogram [ru]
Elk и в графану? :D
источник