2016-08-10 4 views
1

У меня есть постоянный веб-сайт, который должен запускать два веб-приложения в двух местах на TimerTrigger. Когда я разворачиваю webjob из Visual Studio в оба расположения, все работает хорошо, и оба webjobs работают одновременно.Octopus развернул непрерывный WebJob не работает одновременно в двух местах

Теперь я готов начать развертывание с помощью Octopus-Deploy. Я успешно создал план с двумя шагами, который делает это, и помещает сборки в нужное место в веб-приложениях (app_data\jobs\continuous\{jobname}) в Azure. Проблема в том, что только один webjob выполняет свою работу за один раз, даже если оба webjobs имеют статус Running. Если я остановлюсь и запустил тот, который выполняется, другой веб-сайт начинает выполнять свою работу, а тот, который я отключил/включил, имеет статус работы, но никогда не выполняет его работу. Кроме того, если я перераспределяю только одну из них из визуальной студии, они оба снова выполняют свои задания в обоих местах.

Я ничего не делаю с синглтонами и на самом деле пытался отключить его, используя файл 'settings.job' с {is_singleton: false}. Есть что-то, что Octopus делает с пакетом, который заставляет Azure думать, что webjob - одноэлемент?

ответ

2

Я полагаю, что проблема связана с использованием одной и той же учетной записи и идентификатора хоста для обоих приложений, которые вы развернули. Когда вы это делаете, SDK WebJobs рассматривает его как одно веб-приложение, которое было масштабировано до двух экземпляров, и гарантирует, что таймер работает только на одном из них.

Простейшим решением является использование другой учетной записи хранилища для каждого приложения.

+0

Вы правы, я создал отдельные учетные записи для каждого веб-сайта. Как только я изменил строки подключения, они оба выполнили свои задания, как ожидалось. У меня есть один последующий вопрос. Что такое идентификатор хоста? – Daryl

+0

@mathewc может объяснить это лучше меня, поэтому я позволю ему сиять :) –

+0

HostId ссылается на JobHostConfiguration.HostId (в источнике [здесь] (https://github.com/Azure/azure-webjobs-sdk/ блоб/ведущий/SRC/Microsoft.Azure.WebJobs.Host/JobHostConfiguration.cs # L106)). В основном это идентификатор, совместно используемый несколькими экземплярами одного и того же JobHost. Среда выполнения гарантирует, что все экземпляры имеют один и тот же идентификатор. Одиночное поведение TimerTrigger объясняется в wiki [здесь] (https://github.com/Azure/azure-webjobs-sdk-extensions/wiki/TimerTrigger). – mathewc

 Смежные вопросы

  • Нет связанных вопросов^_^