|
|
|
Написание планировщика.
|
|||
|---|---|---|---|
|
#18+
Здравствуйте! Кто-нибудь писал планировщика событий? Есть задача, которую необходимо автоматически выполнять по графику. Задача - генерация отчета, отправка его по почте и.т.д. Собственно вопрос: В каком виде хранить данные (храню в БД) о графике выполнения? Как эти данные обрабатывать самим планировщикам? Планировщик - некий поток, который каждые несколько сек. смотрит в базу на наличие заданий. Необходимо, чтобы можно было создавать примерно такие задания: 1) Выполняющееся периодически, скажем через каждые 5 часов. 2) Так же как и в 1), только в определенные дни недели. 3) Ежедневно, скажем в 12:00 и 16:00. 4) По вт, ср, пт, в каждые 10 минут, но с 12:00 по 16:00 Буду рад любым комментариям! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2007, 15:01:14 |
|
||
|
Написание планировщика.
|
|||
|---|---|---|---|
|
#18+
А чем Cron не устраивает ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2007, 15:24:14 |
|
||
|
Написание планировщика.
|
|||
|---|---|---|---|
|
#18+
ZmeisheА чем Cron не устраивает ? Тем, что ф-я планировки должна быть реализована в моей программе. На машине с программой крона нет (если по Вин). Нужно самописное что-то. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2007, 15:50:21 |
|
||
|
Написание планировщика.
|
|||
|---|---|---|---|
|
#18+
Ну так и делай в своей программе. И я так сделал. А запуск самой программы по расписанию почему не прописать в Linux Cron или куда там в Win ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2007, 16:00:50 |
|
||
|
Написание планировщика.
|
|||
|---|---|---|---|
|
#18+
ZmeisheНу так и делай в своей программе. И я так сделал. А запуск самой программы по расписанию почему не прописать в Linux Cron или куда там в Win ? Попытаюсь объяснить: моя программа - некий сервер, работает с бд. имеет несколько модулей. у каждого свой поток, свое соединение с БД, свой функционал. Один из таких модулей должен генерить отчеты и слать кому надо (уже есть). Но делать это он должен по расписанию. Он не должен зависить от платформы. Он не должен создавать доп. процессов. У него есть его рабочий поток и соединение с БД (ну и с СМТП для почты). Т.е. весь функционал по планированию должен быть реализован в нем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2007, 16:06:41 |
|
||
|
Написание планировщика.
|
|||
|---|---|---|---|
|
#18+
Тогда читай документацию по конфигурированию Linux Cron и реализуй это у себя. авторВ каком виде хранить данные (храню в БД) о графике выполнения? Точно также как Cron хранит. Тока не одной строкой, а разнеси в таблицу БД по разным полям. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2007, 16:11:07 |
|
||
|
Написание планировщика.
|
|||
|---|---|---|---|
|
#18+
Павел. С Т.е. весь функционал по планированию должен быть реализован в нем. Вы меня конечно извините, но функционал планирования ИМХО должен быть реализован в отдельном ни от кого не зависящем потоке. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2007, 17:06:49 |
|
||
|
Написание планировщика.
|
|||
|---|---|---|---|
|
#18+
blinded Павел. С Т.е. весь функционал по планированию должен быть реализован в нем. Вы меня конечно извините, но функционал планирования ИМХО должен быть реализован в отдельном ни от кого не зависящем потоке. Возможно я не совсем правильно выразился. Хочется сделать вот что: 1 (!) поток. Периодически смотрит в базу на предмет заданий. Если нашел подходящее задание - принимается за выполнение. Затем опять в цикл - ждать новых заданий. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2007, 17:36:09 |
|
||
|
Написание планировщика.
|
|||
|---|---|---|---|
|
#18+
А если одно залание на закончили, а другое уже пора начинать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2007, 17:47:37 |
|
||
|
Написание планировщика.
|
|||
|---|---|---|---|
|
#18+
blindedА если одно залание на закончили, а другое уже пора начинать? То сразу же браться за самое "старое" (то, которое надо было начать раньше всех, если заданий на выполнение несколько). И ругаться в лог, чтобы графики сдвигали, мол такие то задания в конфликте. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2007, 18:20:54 |
|
||
|
Написание планировщика.
|
|||
|---|---|---|---|
|
#18+
Во первых, я так и не понял чем не устраивают внешние планировщики? У тебя уже есть либо крон под *никсами, либо шедулер под виндами. Повесь в них запускалку своего отчетного модуля и все. Во вторых, собственный планировщик тоже очень простая вещь - вешаешь процесс который сидит и ждет когда часы пробьют "двенадцать" и запускает очередное задание. Плюс к этому он в пустой период должен каждые цать секунд просыпаться и проверять список заданий, вдруг новое юзер задание создал или старое запретил. Элементарно до ужаса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2007, 18:33:05 |
|
||
|
Написание планировщика.
|
|||
|---|---|---|---|
|
#18+
White OwlВо первых, я так и не понял чем не устраивают внешние планировщики? У тебя уже есть либо крон под *никсами, либо шедулер под виндами. Повесь в них запускалку своего отчетного модуля и все. Во вторых, собственный планировщик тоже очень простая вещь - вешаешь процесс который сидит и ждет когда часы пробьют "двенадцать" и запускает очередное задание. Плюс к этому он в пустой период должен каждые цать секунд просыпаться и проверять список заданий, вдруг новое юзер задание создал или старое запретил. Элементарно до ужаса. Внешние планировщики не устраивают вот чем: 1) Необходимо иметь какой-либо интерфейс взаимодействия с ними. Изменять КронТаб в никсах, либо как-то работать с Win шедулером (COM?). 2) Что может делать крон/шедулер? запускать процесс? Это нужно где-то еще хранить бинарник, писать к нему пути и.т.д. 3) Не будет статистики по загруженности. 4) Задачи параллельно нельзя выполнять. Нужно, например, чтобы один отчет сделался в 12:00, а за ним в 12:15 следующий, качественно другой. Еще я не хочу стобы в БД в пике нагрузки было много соединений. Планируется в день до 20ти заданий всего. На каждое уходит 2-5 секунд + задержки, если надо по почте слать. На мой взгляд не так уж это и элементарно. Мне в голову до сих пор не пришла нормальная идея по реализации. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2007, 18:40:29 |
|
||
|
Написание планировщика.
|
|||
|---|---|---|---|
|
#18+
Странный народ, все велосипеды изобретает... Делаешь так - сервис отчетов, с пулом соединений и пр. у него входная очередь на обработку, он только за ней и смотрит. Из cron/sceduler пихаешь задание на построение отчета в очередь и умираешь, аж сервис по мере возможности трудится ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2007, 19:03:03 |
|
||
|
Написание планировщика.
|
|||
|---|---|---|---|
|
#18+
Павел. СВнешние планировщики не устраивают вот чем: 1) Необходимо иметь какой-либо интерфейс взаимодействия с ними. Изменять КронТаб в никсах, либо как-то работать с Win шедулером (COM?).Зачем??? Внешний тем и хорош, что никакого интерфейса для управления им писать не нужно. Этот интерфейс уже написан. И юзера уже умеют с ним обращаться. Павел. С2) Что может делать крон/шедулер? запускать процесс? Это нужно где-то еще хранить бинарник, писать к нему пути и.т.д.И что? Это проблема? Павел. С3) Не будет статистики по загруженности.Почему??? Ты можешь вести статистику либо в запускалке, либо в самом модуле генерирующем отчет. Павел. С4) Задачи параллельно нельзя выполнять. Нужно, например, чтобы один отчет сделался в 12:00, а за ним в 12:15 следующий, качественно другой.А это-то с чего вдруг проблемой стало? Или ты думаешь что крон с шедулером только по одной задаче за раз запускать могут? :) Павел. СЕще я не хочу стобы в БД в пике нагрузки было много соединений.Тоже совершенно не проблема. У тебя модуль генерации отчета будет подключаться к базе? Ну пусть сервер БД и следит чтобы к нему одновременно приходили не более чем цать клиентов, а отчетный модуль если получит ошибку коннекта "слишком много пользователей" пусть подождет чуток и снова попробует присоединиться. Павел. СНа мой взгляд не так уж это и элементарно. Мне в голову до сих пор не пришла нормальная идея по реализации.Все элементарно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2007, 21:09:06 |
|
||
|
|

start [/forum/topic.php?fid=57&fpage=266&tid=2027729]: |
0ms |
get settings: |
10ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
90ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
47ms |
get tp. blocked users: |
1ms |
| others: | 225ms |
| total: | 416ms |

| 0 / 0 |
