- PVSM.RU - https://www.pvsm.ru -

Развертывание Windows Azure WebJobs

Windows Azure WebJobs — это новая функция Windows Azure Web Sites, подробнее о ней вы можете прочитать тут [1].

Несмотря на то, что вы можете легко добавить новую WebJob используя портал управления Windows Azure, вы, возможно, захотите развертывать WebJob другими способами — ftp/git/WebDeploy. В этом посте я покажу, как WebJob хранятся в вашем Azure WebSites и как вы можете развернуть новую WebJob.

Где хранятся WebJobs?

WebJobs сохраняются в следующей директории вашего сайта:

sitewwwrootApp_Datajobs{job type}{job name}

Где {job type} может быть либо continuous для постоянно запущенных WebJob, либо triggered для тех, которые стартуют по триггеру (по требованию или расписанию).
{job name} — это имя вашей WebJobs

Таким образом, постоянно работающая WebJob с именем myjob будет распологаться в

sitewwwrootApp_Datajobscontinuousmyjob

Что должно быть внутри директории с WebJob?

Директория с WebJob может содержать от одного до стольких файлов, сколько вам требуется, но по меньшей мере должна содержать скрипт, стартующий процесс WebJob. На текущий момент это может быть:

  1. Командный файл (.exe/.cmd/.bat)
  2. Bash (.sh)
  3. JavaScript (.js для node.js)
  4. PHP (.php)
  5. Python (.py)

Скрипты запускаются автоматически по следующей логике:

  1. Сначала ищется файл с именем run.{поддерживаемое расширение} (побеждает первый найденный)
  2. Если он не найден, ищется любой файл с поддерживаемые расширением
  3. Если не найден и он — это не запускаемая WebJob

Примечание: если у вас есть какой-то другой движок исполнения скриптов, который вы хотите использовать
и который не поддерживается на данный момент, вы всегда можете создать файл run.cmd и написать там команду для выполнения (например, powershell -Command run.ps)

Развертывание WebJob

Итак, благодаря этой информацией вы знаете, как создать постоянно работающую WebJob с названием myjob, и все что остается сделать — поместить бинарные файлы в нужную директорию.

Один из способов это сделать — соединиться с вашим сайтом через FTP, создать директорию с правильным именем и скопировать туда бинарные файлы (содержащие хотя бы один поддерживаемый скриптовый файл). Тогда WebJob будет определена автоматически и немедленно начнет выполняться.

Развертывание WebSite+WebJobs

Для развертывания сайта с WebJobs все, что вам нужно сделать — убедится, что вы разворачиваете вашу WebJob в верное место. Для примера, взгляните на следующую структуру сайта на node.js с WebJob:

./server.js
./App_Data/jobs/continuous/myjob/run.cmd

Пока проект содержит эти два файла — это веб-сайт с постоянно запущенной WebJob, и вы можете использовать любой инструмент для развертывания, который вы предпочитаете — ftp/WebDeploy/git/…

Обновление развёртывания

Постоянно запущенные WebJob (continuous) — после того, как вы развернете новую WebJob на месте старой, текущий запущенный процесс будет прерван и перезапущен с новыми бинарными файлами.
triggered — обновление развертывания не затрагивает текущую запущенную WebJob, но следующий запуск произойдет уже с новыми файлами

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

Предостережение касательно Triggered WebJob

Одна проблема, с который мы сталкиваемся при развертывании triggered WebJob этим способом, заключается в том, что, фактически, это получается WebJob, запускаемая по требованию, и вам требуется нажать кнопку RUN ONCE в портале управления, чтобы запустить её. На данный момент нет простого способа добавить расписание для неё.

Обходным путем может быть создание пустого запланированного WebJob с необходимым именем и тогда развертывание заменит файлы, но сохранит текущее расписание.

Автор: jgc128

Источник [2]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/news/55120

Ссылки в тексте:

[1] тут: http://www.windowsazure.com/en-us/documentation/articles/web-sites-create-web-jobs/

[2] Источник: http://habrahabr.ru/post/212765/