Ожидание / Сон внутри метода Azure WebRole OnStart - PullRequest
3 голосов
/ 15 февраля 2012

Является ли хорошей практикой ожидание / сон в методе RoleEntryPoint.OnStart веб-роли? Мы хотим убедиться, что наш сервис полностью готов, прежде чем сообщить Azure, что мы готовы к запросу на обслуживание.

Ответы [ 3 ]

3 голосов
/ 15 февраля 2012

Да, вы можете подождать некоторое время в методе OnStart для инициализации служб.

OnStart выполняет инициализацию вашей системы.Если у вас есть служба, которую необходимо настроить и инициализировать перед входом в состояние выполнения вашей роли, вам нужно инициализировать ее в OnStart перед выходом из этого метода.

Среда роли продолжит вызывать метод Runвашей RoleEntryPoint сразу после выхода из OnStart.Точное время, необходимое для вызова следующего метода, неизвестно.Это также переместит ваш сервис из RoleInstanceStatus.Busy в RoleInstanceStatus.Ready, когда экземпляр роли начнет получать трафик.

Насколько я знаю, для экземпляров роли нет времени ожидания инициализации.(С другой стороны, метод OnStop, когда ваш экземпляр по какой-либо причине отключается, по практическим причинам имеет ограниченное время для завершения выполнения. Не уверен, но однажды я услышал пять или пятнадцать секунд.)

1 голос
/ 15 февраля 2012

Цель метода OnStart - выполнить всю инициализацию внутри. Итак, после выхода из этой функции ваш экземпляр должен быть полностью функциональным. В твоем случае я думаю, что хорошо подождать немного в OnStart. В течение этого времени роль будет иметь статус «Занят» и не будет получать никаких входящих веб-запросов, но все равно сможет взаимодействовать с хранилищем и базой данных.

В нашем проекте OnStart загружает все необходимые данные из хранилища BLOB-объектов, распаковывает и регистрирует их. Затем мы проверяем, что эта роль исправна и только после этого оставляем метод OnStart.

1 голос
/ 15 февраля 2012

Насколько я знаю, когда внутри OnStart статус роли будет в Busy, это означает, что он сообщил в Fabric Controller, что он все еще находится в фазе инициализации. Я не думаю, что хорошо или плохо спать в OnStart, но вам, возможно, придется учесть время ожидания начала роли.

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

...