Насколько надежен планировщик задач Windows для повторного запуска кода? - PullRequest
6 голосов
/ 06 апреля 2009

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

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

Ответы [ 8 ]

12 голосов
/ 06 апреля 2009

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

Я бы не рекомендовал вызывать запланированное задание каждую минуту.

5 голосов
/ 06 апреля 2009

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

3 голосов
/ 14 октября 2009

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

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

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

2 голосов
/ 09 марта 2010

При поиске помощи по расписанию я наткнулся на очень хорошую статью Джона Галлоуэя

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

2 голосов
/ 06 апреля 2009

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

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

2 голосов
/ 06 апреля 2009

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

1 голос
/ 06 апреля 2009

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

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

0 голосов
/ 06 апреля 2009

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

...