students precios microsoft management for caracteristicas azure-web-sites azure-webjobs

azure web sites - precios - Cómo evitar que los webjobs de Azure se intercambien en las ranuras de preparación de la producción del sitio web de Azure<-->



microsoft management azure (3)

Tengo un sitio web de Azure con una ranura de producción y puesta en escena con varias instancias.

Ejecuto varios sitios web de Azure en el sitio, algunos de los cuales se activan otros que son continuos.

Entiendo que los webjobs activados solo se ejecutarán una vez en una instancia.

Mi configuración actual es:

  • El sitio de producción no tiene más despliegue que el intercambio de la puesta en escena

  • El sitio web provisional está configurado para el despliegue continuo desde bitbucket

  • Los webjobs se implementan desde VS a la ranura de producción usando "publicar en Azure" (desde AFAIK no hay soporte para la implementación continua de webjobs que se basan en la programación)

  • La solución VS para el sitio web es diferente de la solución VS que contiene webjobs

Noté que cuando cambio la producción y la puesta en escena, ¡los webjobs también se intercambian! Me di cuenta de esto cuando había implementado un nuevo trabajo web en producción y, posteriormente, hice un despliegue de sitio web seguido de un intercambio, ¡el trabajo web recién implementado ya no estaba en la ranura de producción!

Mis preguntas:

  1. ¿Es posible evitar que los webjobs cambien entre la producción y la puesta en escena (los webjobs son piezas de código realmente diferentes a las del sitio web)?

  2. ¿Qué se cambia exactamente por webjobs? Binarios? ¿Programar? Ambos ?

  3. ¿Cómo puedo evitar que todos los webjobs se ejecuten en la ranura de ensayo? Mis webjobs no necesitan estar altamente disponibles y puedo probarlos sin conexión fácilmente.

  4. Si VS implemento webjobs en la ranura de transferencia y hago un intercambio, entonces a la ranura de transferencia actual le faltará la aplicación web desplegada y la perderé cuando haga la próxima actualización de mi sitio web.

Hay un hilo relacionado pero asume que el trabajo web se implementa simultáneamente con un sitio web que no es el que tengo actualmente.

Realmente me gustan los sitios web y webjobs, pero parece que la historia relacionada con la implementación independiente continua de webjobs y sitios web está rota.

Realmente apreciaría el consejo!

Gracias


Aquí está la respuesta de Amit al # 3 usando PowerShell,

Function Disable-AzureSlotJobs($SiteName, $Slot = ''staging'') { $site = Get-AzureWebsite -Name $SiteName -Slot $Slot $site.AppSettings.WEBJOBS_STOPPED = "1" Set-AzureWebsite -Name $SiteName -Slot $Slot -AppSettings $site.AppSettings Set-AzureWebsite -Name $SiteName -SlotStickyAppSettingNames @("WEBJOBS_STOPPED") } ''MySite1'', ''MySite2'', ''MySite3'' | % { Disable-AzureSlotJobs $_ }


La solución mucho más fácil para este problema es tener una aplicación web separada para su trabajo web. Simplemente coloque la aplicación web del trabajador en el mismo plan de servicio de Azure y tendrá dos aplicaciones web separadas ejecutándose en la misma máquina (es).

aplicación web aplicación web trabajador


Las ranuras de implementación de sitios web de Azure no son un concepto fácil de entender, junto con WebJobs se vuelve un poco más difícil.

Sugiero leer la siguiente publicación para comprender mejor las ranuras de implementación: http://blog.amitapple.com/post/2014/11/azure-websites-slots/ (incluida la sección de comentarios para obtener información útil)

Para obtener una mejor comprensión de cómo funcionan y se implementan los WebJobs, consulte esta publicación: http://blog.amitapple.com/post/74215124623/deploy-azure-webjobs/

Es importante entender que:

  1. Al intercambiar las ranuras de implementación, usted realmente intercambia el contenido / archivos del sitio web entre las 2 ranuras.
  2. Los webjobs son parte del contenido del sitio web.

Entonces, cuando intercambias la ranura, intercambias los archivos del sitio web, incluido el WebJob.

Tenga en cuenta que es una mala práctica implementar un WebJob directamente y no como parte de los archivos / repositorios de su sitio web, esta es probablemente la causa de los problemas que tiene.

Para evitar que WebJobs se ejecute en la ranura de ensayo, puede agregar una configuración de aplicación llamada WEBJOBS_STOPPED y establecerla en 1 (en el portal de WEBJOBS_STOPPED ). ( source ). Asegúrese de que la configuración de esta aplicación esté pegada a la ranura, de lo contrario se propagará a la ranura de producción.