...

воскресенье, 16 февраля 2014 г.

[Перевод] Развертывание Windows Azure WebJobs

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

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


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




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


site\wwwroot\App_Data\jobs\{job type}\{job name}





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

{job name} — это имя вашей WebJobs

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



site\wwwroot\App_Data\jobs\continuous\myjob





Что должно быть внутри директории с 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 с необходимым именем и тогда развертывание заменит файлы, но сохранит текущее расписание.


This entry passed through the Full-Text RSS service — if this is your content and you're reading it on someone else's site, please read the FAQ at http://ift.tt/jcXqJW.


Комментариев нет:

Отправить комментарий