Как разрешить выполнение заданий в нерабочее время, когда пул приложений IIS может простаивать?

Я пытаюсь разобраться, используя Hangfire с основным веб-приложением .net. Примеры кажутся достаточно простыми, однако у меня есть вопросы.

Если я хочу запустить задание по расписанию cron, даже если пул приложений iis спит, не следует ли мне рассмотреть возможность размещения сервера Hangfire в службе Windows?

Если в веб-приложении используются и сервер, и клиент, в документации упоминается об изменении корневого файла конфигурации .net, чтобы ваше приложение всегда работало. http://docs.hangfire.io/en/latest/deployment-to-production/making-aspnet-app-always-running.html

Почему вы не можете вместо этого просто установить тайм-аут пула приложений на 0?

Другой вариант - разместить сервер Hangfire как часть проекта службы Windows. Я бы предпочел не связываться со службой Windows, если она действительно не нужна. Это необходимо для запуска запланированного задания (через расписание cron) для выполнения, даже если ни один пользователь не делает запросы к приложению, чтобы предотвратить переход пула приложений в спящий режим. Установка тайм-аута простоя пула приложений должна делать то же самое, не так ли?


person bitshift    schedule 04.02.2019    source источник
comment
Что вы имеете против использования его как службы Windows? Если вашему коду не нужен HTTP-контекст для работы, его не должно быть в веб-приложении. Если вы действительно хотите сделать то, что вы описали, документация Hangfire описывает, как перевести пул приложений в постоянно работающий режим. Но я не рекомендую. Это злоупотребление тем, для чего предназначены веб-приложения.   -  person mason    schedule 04.02.2019
comment
Вот что вам стоит бросить вызов разработчикам Hangfire. Этот проект, если он используется в веб-приложениях, приводит к большему количеству проблем, чем когда-либо, если вы ищете в Интернете, и Microsoft никогда не рекомендует такие. Запустите службу Windows, чтобы все исправить.   -  person Lex Li    schedule 04.02.2019
comment
Microsoft действительно написала сообщение в блоге, в котором рекомендовала его в 2017 году (но сейчас он удален).   -  person codeMonkey    schedule 26.11.2019


Ответы (1)


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

Теперь я могу пересмотреть этот ответ с выпуском Net Core 2.2. MS добавила службу «Фоновая задача», которая позволяет запускать файлы на сервере, пока сервер активен:

https://docs.microsoft.com/en-us/aspnet/core/fundamentals/host/hosted-services?view=aspnetcore-2.2&tabs=visual-studio

person Robert Perry    schedule 10.02.2019
comment
Сама работа не займет много времени, но я хочу выполнять ее по расписанию. - person bitshift; 18.02.2019