Как запустить Hangfire (всегда включен) на общем хостинге Azure?

Я хочу развернуть в Azure простой сайт ASP.NET MVC с общим хостом (используя вариант бесплатного сайта), который использует Hangfire для запускать запланированные задачи.

Проблема в том, что сайт запускается только по первому запросу, поэтому Hangfire не начинает планировать задачи до тех пор. С помощью IIS или выделенной виртуальной машины вы можете установить параметр «всегда включен» для предварительного прогрева сайта. Но это невозможно на виртуальном хостинге.

Что я могу с этим поделать? Я думал заплатить за самую маленькую виртуальную машину, названную "A0", и поместив туда скрипт ping, чтобы мой сайт всегда был в рабочем состоянии. Это бы сработало, но кажется излишним.

Есть ли другие хорошие варианты?


person h bob    schedule 05.11.2014    source источник
comment
Рассматривали ли вы возможность использования Планировщика Azure (azure.microsoft.com/en-us/services/ планировщик) вместо этого?   -  person haim770    schedule 05.11.2014
comment
@ haim770 Бесплатная опция позволит мне пинговать только ежечасно. Самый дешевый платный вариант будет делать это каждую минуту, но он стоит столько же, сколько виртуальная машина, поэтому виртуальная машина кажется более ценной. Ребята из MS, занимающиеся маркетингом, очень умны со своими ценами на Azure!   -  person h bob    schedule 05.11.2014
comment
Обновление @ haim770 для любых новых читателей: Планировщик Azure будет упразднен 30 сентября 2019 года. Вместо этого MS рекомендует перейти на LogicApps.   -  person Caltor    schedule 07.02.2019


Ответы (2)


Если вы все еще хотите использовать лазурный веб-сайт, вам нужно переключиться с SHARED на BASIC (это первый с опцией ALWAYS ON), но это более чем в 3 раза дороже, чем самая дешевая виртуальная машина.

На вашем месте я бы выбрал самый дешевый облачный сервис — веб-роль. Она стоит немного дороже, чем самая дешевая виртуальная машина, но она уже настроена для веб-сайтов, и вам не нужно настраивать все самостоятельно + вы можете использовать Visual Studio для ее развертывания, вы можете подключить RDP к коробке и многое другое.

См. http://azure.microsoft.com/en-us/pricing/details/cloud-services/ для получения подробной информации о ценах.

Но, как было предложено в комментариях, Azure Schedule стоит посмотреть.

ОБНОВЛЕНИЕ: (ВНИМАНИЕ - интересное, но совершенно не серьезное решение)

Используйте планировщик Azure для проверки связи с веб-страницей, чтобы поддерживать ее работоспособность ;-) Вы можете создавать до 5 заданий с максимальным выполнением каждый час на БЕСПЛАТНОМ уровне. Это означает, что вы можете создать 5 рабочих мест, которые будут пинговать ваш сайт каждые 12 минут.

person b2zw2a    schedule 05.11.2014
comment
Да, я уже отметил это в комментариях выше. Это хороший вариант, но мне нужно более 1 часа пингов. И стоимость такая же, как просто получить небольшую виртуальную машину. - person h bob; 05.11.2014
comment
Вы можете использовать БЕСПЛАТНЫЙ уровень и создавать 5 заданий проверки связи каждый час: 00:00, 00:12, 00:24, 00:36 и 00:48 — это означает, что вы можете получать проверку связи каждые 12 минут (5 заданий). Сведения о ценах azure.microsoft.com/en-gb/pricing/details/scheduler - person b2zw2a; 05.11.2014
comment
Честно говоря, это настолько хорошо, что планировщик Hangfire больше не нужен. Я просто создам задание, которое делает запрос к действию MVC, которое выполняет запланированное действие. Я счастлив иметь его каждые 12 минут! - person h bob; 05.11.2014
comment
Но, конечно, это означает, что любой может получить доступ к этому действию. Это угроза безопасности... не знаю, что я буду с этим делать. - person h bob; 05.11.2014
comment
Вы можете использовать POST, чтобы избежать случайного перехода к вашему действию. Это все еще не безопасно. Если вы хотите убедиться, что какое-то действие выполняется только каждые x минут, просто сохраните где-нибудь последнее время выполнения и проверьте его при вызове действия MVC. Кстати: я надеюсь, что вы не внедряете какую-либо критическую/производственную систему. - person b2zw2a; 05.11.2014
comment
Это не критично, но я предпочитаю, чтобы он не вызывался более одного раза за раз - ваша идея с отметкой времени хороша, но блокировка действия еще лучше (хотя я трачу таким образом потоки из пула потоков). - person h bob; 05.11.2014
comment
Планировщик Azure будет упразднен 30 сентября 2019 года. Вместо этого MS рекомендует перейти на LogicApps. - person Caltor; 07.02.2019

Старый вопрос, который я знаю, но, возможно, я что-то упускаю. Я использую UptimeRobot (https://uptimerobot.com/), поскольку он постоянно отправляет запросы на ваш веб-сервер, чтобы поддерживать его в рабочем состоянии. . Разве это не будет намного проще, чем создать автоматизированное задание самостоятельно? Опять же, я не уверен, что нахождение в общей среде сделает UptimeRobot бесполезным, но просто мысль, которую я хотел передать.

person ryanulit    schedule 03.04.2015
comment
Или pingdom.com. Та же идея... просто продолжайте биение сердца, и все будет в порядке. - person BlackjacketMack; 12.06.2015