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

StackOverflow https://stackoverflow.com/questions/722678

Вопрос

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

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

Это было полезно?

Решение

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

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

Другие советы

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

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

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

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

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

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

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

Во время поиска запланированной сервисной справки я наткнулся на очень хороший статья Джона Гэллоуэя.

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top