2009-04-06 3 views
5

У меня есть немного кода, который должен сидеть на машине Windows Server 2003 и запускаться каждую минуту.Насколько надежным является планировщик задач Windows для многократного запуска кода планирования?

Каков рекомендуемый способ обращения с этим устройством? Можно ли спроектировать его как консольную службу и просто настроить планировщик задач? (возможно ли это?) Должен ли я просто отсосить его и написать его как сервис Windows?

ответ

12

Поскольку он должен запускаться каждую минуту, я бы предложил написать службу Windows. Это не очень сложно, и если вы никогда этого не делали раньше, вам было бы здорово узнать, как это делается.

Вызов запланированной задачи каждую минуту - это не то, что я бы рекомендовал.

+0

Почему вы рекомендуете службу Windows вместо планировщика задач, если она запускается каждую минуту? Что заставляет вас пойти на этот вариант? –

4

Я бы сказал, сосать его и написать в качестве службы Windows. Я не нашел запланированные задачи очень надежными, и когда он не запускается, мне еще предстоит найти простой способ узнать, почему это не так.

+2

Журнал событий должен сказать, почему этого не произошло. –

+1

@jeffamaphone "should" - это ключевое слово. Я также обнаружил, что запланированные задачи ненадежны, часто не оставляя следов попытки запуска в журнале событий. –

2

Если вам нужно, чтобы он запускался каждую минуту, я бы построил его как сервис Windows. Я бы не использовал планировщик для чего-то меньшего, чем ежедневная задача.

2

Я бы сказал, что это зависит от того, что он делает, но в целом я всегда в пользу наличия наименьших слоев. Если вы пишете его как консольную службу и используете планировщик задач, у вас есть два места для продолжения работы.

Если вы пишете его как услугу Windows, тогда у вас будет только одно место для проверки, если что-то пойдет не так.

0

Я согласен, что это пустая трата усилий, чтобы создать даже консольный исполняемый файл и запланировать его запуск каждую минуту. Я бы предложил изучить что-то вроде Quartz.Net. Таким образом, вы можете создать простую работу и запланировать ее работу каждую минуту.

+1

Кажется, вы против идеи планировать задачу, чтобы запускать каждую минуту ... но для идеи сделать это через Quartz.Net? Я что-то упускаю? –

1

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

Например, создание пакета SSIS для вашей службы, связанной с SQL Server, может показаться чересчур избыточным, но может быть хорошо интегрировано с окружением и будет иметь свои собственные механизмы проверки/проверки ошибок уже на месте.

3

Задачи Windows Scheduled Tasks были достаточно надежны для наших целей, и мы поддерживаем их почти во всех случаях через Windows Services из-за их простоты установки и расширенных функций восстановления. Всегда в природе службы Windows может оказаться проблемой, если часть кода, который был написан, заканчивается тем, что он блокируется или зацикливается в куске кода, в котором он не должен находиться. Обычно мы пишем наш код в мода похожа на эту

Init(); 
Run(); 
CleanUp(); 

Затем в рамках запланированной задачи мы ставим лимит времени, как долго этот процесс может работать и это убить процесс, если он работает дольше. Если у нас есть кусок кода, у которого возникают проблемы, запланированные задачи убьют его, и процесс запустится в следующую минуту.

2

При поиске запланированной службы помощи я столкнулся с очень хорошим article by Jon Galloway.

Существуют различные недостатки, если для запланированной задачи используется служба Windows. Я согласился с этим. Я бы предложил использовать Task Scheduled, простой в реализации. См. detailed information of implementing the task scheduler. Надеемся, что эта информация поможет в завершении реализации подхода.

Смежные вопросы