Веб-задание не запускается

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

Первоначальное тестирование показалось нормальным: задание запускалось вскоре после помещения чего-либо в очередь.

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

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

Когда я вошел на портал управления на этот раз, я заметил, что задание было помечено как «Прервано» на странице веб-заданий. Так было всего около 10 секунд, прежде чем статус изменился на «Выполняется». И тогда задание немедленно запускалось из того, что было помещено в очередь накануне вечером, как и ожидалось.

Поскольку это альфа-релиз, я жду глюков. Просто интересно, был ли у кого-нибудь еще подобный опыт.


person iturner100    schedule 05.02.2014    source источник
comment
Не могли бы вы поделиться кодом вакансии?   -  person Victor Hurdugaci    schedule 07.02.2014
comment
Кроме того, вы используете уровень бесплатного пользования для веб-сайтов или какой?   -  person Victor Hurdugaci    schedule 07.02.2014
comment
Веб-сайт работает в общем режиме, а не в бесплатном.   -  person iturner100    schedule 11.02.2014


Ответы (2)


Для SDK WebJobs ваше задание должно быть запущено, чтобы отслеживать триггеры (новые сообщения в очереди, новые большие двоичные объекты и т. Д.). Уровень бесплатного пользования веб-сайтами Azure имеет квоты и усыпит вашу работу, что означает, что он больше не будет прослушивать триггеры. Использование сайта может заставить его ожить и снова начать слушать триггеры.

На панели инструментов SDK будет отображаться значок предупреждения рядом с функциями, если задание хостинга не запущено (он определяет это по тактовому сигналу).

person Mike S    schedule 10.02.2014
comment
Работа выполняется на веб-сайте, который включает в себя как mvc, так и webapi. Json публикуется в webapi, что в конечном итоге приводит к помещению элемента в очередь хранилища. У веб-задания есть триггер очереди, который отправляет сообщение на внешний API. Таким образом, исходя из этого порядка событий, можно предположить, что время существования веб-задания не связано со временем жизни самого веб-сайта. Согласно исходному сообщению, панель управления на короткое время показывает задание как «прерванное», а затем, кажется, возвращает задание обратно в состояние «Выполняется». Одна вещь, которая может иметь значение, это то, что моя работа использует метод async ... - person iturner100; 11.02.2014
comment
SDK (пока) не поддерживает асинхронный режим. Я бы посоветовал сначала выполнить синхронизацию. Когда веб-задание (т. Е. Код C #, который ссылается на Microsoft.WindowsAzure.Jobs.JobHost) выполняется, оно производит сердцебиение. Панель управления определяет это сердцебиение, чтобы определить, не завершился ли хост неожиданно. Панель управления будет использовать это, чтобы предупредить вас, если хосты не работают. - person Mike S; 12.02.2014

Убедитесь, что на вашем веб-сайте включен параметр «Всегда включен».

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

http://azure.microsoft.com/en-us/documentation/articles/web-sites-configure/

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

person PLT    schedule 08.04.2014