Azure - как запустить задание, которое каждый час вызывает функцию в веб-сервисе? - PullRequest
2 голосов
/ 18 декабря 2011

Я использую Microsoft Azure и у меня есть веб-сервис и база данных SQL Azure. Я хочу запускать функцию каждый час, но не знаю, как это сделать?Я предполагаю, что это как-то связано с рабочими ролями Azure, но не уверен, как заставить рабочую роль запускаться и вызывать веб-службу.

Ответы [ 3 ]

6 голосов
/ 18 декабря 2011

В методе Run () веб-роли или рабочей роли вы можете запустить поток, который спит до самого часа, просыпается, выполняет любые задачи, которые вы хотите, и возвращается в режим сна.,Просто помните, что при наличии нескольких экземпляров веб- или рабочей роли, которые выполняют планирование, вам необходимо убедиться, что только один из этих экземпляров фактически выполняет планирование.Один из способов добиться этого - попытаться взять в аренду большой двоичный объект до запуска потока планировщика.Если вы заблокируете это, пойти на это.Если нет, просто периодически проверяйте.В конце концов, экземпляр, получивший блокировку, снимет его, когда его экземпляр будет перезагружен (что должно происходить не реже одного раза в месяц).

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

2 голосов
/ 18 декабря 2011

Рабочая роль выполняется постоянно.В вашей рабочей роли вы должны:

  1. Проверить, была ли функция запущена в этот час.Если так, ничего не делай.
  2. Если функция не была выполнена в этот час, выполните функцию.
  3. В функции вызовите веб-сервис и выполните грязную работу.
1 голос
/ 18 декабря 2011

Ознакомьтесь с проектом агента SQL Azure и его ссылками на замечательные статьи группы SQL Azure.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...