2014-07-01 25 views
13

Mamy konfigurację witryny Azure ze szczeliną do wdrażania "na postoju", a do przetwarzania długo działających zadań w tle używamy ciągłej usługi Azure WebJob. Wygląda na to, że kiedy publikujesz na stronie internetowej (i zawiera pliki binarne WebJob), WebJob uruchomi się ponownie, jeśli wcześniej został zatrzymany.Jak zapobiec uruchamianiu Azure WebJob po opublikowaniu?

Nasz obecny proces wdrażania wygląda następującą:

  1. Deploy do inscenizacji
  2. Natychmiast & Szybko zatrzymać WebJob na pomostowym (próbować zapobiec 2 WebJobs z wiadomości Processing)
  3. Test Dym i sprawdź kod w działaniach STAGING
  4. Zatrzymaj PRODUKCJĘ WebJob (pozwól, aby zniknęły komunikaty w kolejce)
  5. Zamiana między Produkcja i inscenizacja
  6. Uruchom WebJob produkcji (który był tylko WebJob inscenizacja)

jest jakiś trik (słownie plik flag lub coś) opowiedzieć WebJob nie uruchamia się po opublikowaniu?

Odpowiedz

18

Aby wdrożyć ciągły WebJob w stanie zatrzymanym, po prostu dodaj plik o nazwie disable.job w katalogu głównym WebJob (pliki binarne), dzięki temu dowiesz się, że WebJob jest aktualnie zatrzymany.

Aby wyświetlić to zachowanie, można po prostu zatrzymać ciągły WebJob i zobaczyć, że plik ten jest generowany i umieszczany w katalogu WebJob.

+0

Właśnie to przetestowałem i działa świetnie. Dodałem plik "disable.job" do katalogu głównego mojego projektu konsoli C# i ustawię działanie kompilacji na "Content". – ericb

+0

@Amit Mogłem dać przysięgę, że do niedawna, kiedy strona została opublikowana, stan webjobu pozostałby taki sam - jeśli zostanie zatrzymany, zatrzymaj go; jeśli działa, utrzymaj go w ruchu. Fakt, że publikuję nową wersję kodu aplikacji internetowej i/lub kodu dla webjobów, nie powinien być postrzegany przez założenie, że należy zmienić bieżący stan sesji. FYI napisałem na ten tutaj https://stackoverflow.com/questions/42380853/stopped-azure-webjobs-are-starting-following-publishing-of-web-app. – Matt

0

AFAIK, nie ma na to gotowego rozwiązania. Możesz jednak ustawić ustawienie aplikacji i po uruchomieniu sprawdzić kod webjob. Można również użyć zmiennej HTTP_HOST, aby poznać otoczenie.

+0

To dobry pomysł, ale jeśli ustawisz zadanie ciągłe do uruchomienia, ale faktycznie przerwiesz je, zamiast wywoływać RunAndBlock(), Azure powinna zrestartować go tak, jakby był zamknięty. Czy to założenie nie jest prawidłowe? – jsgoupil

12

Możesz dodać ustawienie aplikacji WEBJOBS_STOPPED do swojego gniazda tymczasowego i ustawić je na 1. Ustaw to ustawienie jako "Ustawienie gniazda", aby nie było ono zamieniane na produkcję.

+0

To zadziałało dla mnie. Więcej informacji: https://github.com/projectkudu/kudu/search?utf8=%E2%9C%93&q=IsWebJobsStopped –

+1

Po ustawieniu tej opcji można sprawdzić, czy zadanie NIE jest uruchomione ("Zatrzymano") podczas przemieszczania Twój pulpit webjobs: https://yoursubdomain.scm.azurewebsites.net/azurejobs/ – sammy34

+0

To działa dla mnie. Powinna być zaakceptowana odpowiedź IMO –

Powiązane problemy