Eseguire attività in background con processi Web

Panoramica

È possibile eseguire programmi o script in Processi Web nell'app Web del servizio app di Azure in tre modi: su richiesta, sempre, in base a una pianificazione. Non sono previsti costi aggiuntivi per l'uso di Processi Web.

Nota

WebJobs SDK non supporta ancora .NET Core.

Nell'articolo viene descritto come distribuire Processi Web utilizzando il Portale di Azure. Per informazioni sulla distribuzione mediante Visual Studio o un processo di distribuzione continua, vedere Come distribuire Processi Web di Azure nelle App Web.

Azure WebJobs SDK semplifica molte attività di programmazione dei processi Web. Per ulteriori informazioni, vedere Definizione dell'SDK di Processi Web.

Funzioni di Azure offre un altro modo per eseguire programmi e script da un ambiente senza server o da un'app Servizio app. Per altre informazioni, vedere Panoramica di Funzioni di Azure.

Nota

Sebbene in questo articolo si faccia riferimento alle app Web, è applicabile anche ad app per le API e app per dispositivi mobili.

Tipi di file consentiti per script e programmi

Sono consentiti i tipi di file seguenti:

  • .cmd, .bat, .exe (Prompt dei comandi di Windows)
  • .ps1 (PowerShell)
  • .sh (Bash)
  • .php (PHP)
  • .py (Python)
  • .js (Node)
  • JAR (Java)

Creare un processo Web su richiesta nel portale

  1. Nel pannello App Web del Portale di Azure fare clic su Tutte le impostazioni > Processi Web per visualizzare il pannello Processi Web.

    Pannello Processi Web

  2. Fare clic su Aggiungi. Viene visualizzata la finestra di dialogo Aggiungi processo Web .

    Pannello Aggiungi processo Web

  3. In Nameindicare un nome per il processo Web. Il nome deve iniziare con una lettera o un numero e non può contenere caratteri speciali diversi da "-" e "_".
  4. Nella casella Modalità di esecuzione selezionare Esegui su richiesta.
  5. Nella casella Caricamento file , fare clic sull'icona della cartella e accedere al file zip che contiene lo script. Il file ZIP deve contenere il file eseguibile (con estensione .exe, .cmd, .bat, .sh, .php, .py, .js) e gli eventuali file di supporto necessari per eseguire il programma o lo script.
  6. Selezionare Crea per caricare lo script nell'app Web.

    Il nome indicato per il processo Web viene visualizzato nell'elenco del pannello Processi Web .

  7. Per eseguire il processo Web, fare clic con il pulsante destro del mouse sul nome visualizzato nell'elenco e scegliere Esegui.

    Eseguire un processo Web

Creare un processo Web con esecuzione continua

  1. Per creare un processo Web eseguito in modo continuo, seguire la stessa procedura usata per creare un processo Web eseguito una sola volta, ma nella casella Modalità di esecuzione selezionare Continuo.
  2. Per avviare o interrompere un processo Web continuo, selezionarlo con il pulsante destro del mouse nell'elenco, quindi fare clic su Avvia o Interrompi.
Nota

Se l'app Web è in esecuzione su più di un'istanza, il processo Web con esecuzione continua verrà eseguito su tutte le istanze. I processi Web su richiesta e pianificati vengono eseguiti su una singola istanza selezionata per il bilanciamento del carico da Microsoft Azure.

Per i processi Web continui da eseguire in modo affidabile su tutte le istanze, abilitare l'impostazione di configurazione Always On* per l'app Web, altrimenti è possibile che l'esecuzione dei processi venga interrotta quando il sito host SCM rimane inattivo per troppo tempo.

Creare un processo Web pianificato utilizzando un'espressione CRON

Questa tecnica, disponibile per le app Web in esecuzione in modalità Basic, Standard o Premium, richiede che nell'app sia abilitata l'impostazione Always On .

Per trasformare un processo Web On Demand in un processo Web pianificato, includere semplicemente un file settings.job nella directory principale del file zip del processo Web. Questo file JSON deve includere una schedule proprietà con un espressione CRON, per esempio quanto riportato di seguito.

L'espressione CRON è composta da 6 campi: {second} {minute} {hour} {day} {month} {day of the week}.

Ad esempio, per attivare il processo Web ogni 15 minuti, settings.job avrebbe:

{
    "schedule": "0 */15 * * * *"
}

Altri esempi di programmazione CRON:

  • Ogni ora (ad esempio ogni volta che il numero di minuti è 0): 0 0 * * * *
  • Ogni ora dalle 9 di mattina alle 5 del pomeriggio: 0 0 9-17 * * *
  • Alle 9:30 di mattina ogni giorno: 0 30 9 * * *
  • Alle 9:30 di mattina ogni giorno della settimana: 0 30 9 * * 1-5

Nota: quando si distribuisce un processo Web da Visual Studio, assicurarsi di contrassegnare le proprietà del file settings.job come "Copia se più recente".

Creare un processo Web pianificato utilizzando l’Utilità di pianificazione di Azure

La tecnica alternativa seguente usa l'utilità di pianificazione di Azure. In questo caso, il processo Web non dispone di alcuna conoscenza diretta della pianificazione. Al contrario, l'utilità di pianificazione di Azure verrà configurata per attivare il processo Web in una pianificazione.

Il portale di Azure non permette ancora di creare un processo Web pianificato; tuttavia, attualmente è possibile eseguire questa operazione utilizzando il portale classico.

  1. Nel portale classico , accedere alla pagina del processo Web e fare clic su Aggiungi.
  2. Nella casella Modalità di esecuzione scegliere Esegui in base a una pianificazione.

    Nuovo processo pianificato

  3. Scegliere una voce in Scheduler Region per il processo e quindi fare clic sulla freccia nella parte inferiore destra della finestra di dialogo per passare alla schermata successiva.
  4. Nella finestra di dialogo Crea processo scegliere il tipo di Ricorrenza desiderata: Processo con singola occorrenza o Processo ricorrente.

    Pianificare la ricorrenza

  5. Scegliere un'ora di inizio: Ora o A un orario specifico.

    Pianificare l'ora di inizio

  6. Se si desidera che la pianificazione venga avviata a un'ora specifica, scegliere i valori dell'ora di inizio in Starting On.

    Pianificare l'avvio a un'ora specifica

  7. Se si sceglie un processo ricorrente, è disponibile l'opzione Ricorre ogni per specificare la frequenza di ricorrenza e l'opzione Data di fine per specificare la data e l'ora di fine.

    Pianificare la ricorrenza

  8. Se si sceglie Settimane, è possibile selezionare la casella In una pianificazione specifica e specificare i giorni della settimana in cui verrà eseguito il processo.

    Pianificare i giorni della settimana

  9. Se si sceglie Mesi e si seleziona la casella In una pianificazione specifica, è possibile impostare l'esecuzione del processo in determinati giorni del mese in Giorni.

    Pianificare date specifiche nel mese

  10. Se si sceglie Week Days, è possibile selezionare il giorno o i giorni della settimana del mese nei quali deve essere eseguito il processo.

    Pianificare giorni della settimana specifici in un mese

  11. Infine, è possibile usare l'opzione Occorrenze per scegliere la settimana del mese (prima, seconda, terza e così via) in cui deve essere eseguito il processo nei giorni della settimana specificati.

    Pianificare giorni della settimana specifici per determinate settimane in un mese

  12. Dopo avere creato uno o più processi, i relativi nomi verranno visualizzati nella scheda WebJobs insieme a stato, tipo di pianificazione e altre informazioni. Vengono mantenute le informazioni cronologiche sugli ultimi 30 processi Web.

    Elenco processi

Processi pianificati e Utilità di pianificazione di Azure

I processi pianificati possono essere ulteriormente configurati nell'Utilità di pianificazione di Azure del portale classico.

  1. Nella pagina WebJobs fare clic sul collegamento schedule del processo per passare alla pagina del portale dell'Utilità di pianificazione di Azure.

    Collegamento all'Utilità di pianificazione di Azure

  2. Nella pagina Scheduler fare clic sul processo.

    Processo nella pagina del portale dell'Utilità di pianificazione

  3. Verrà visualizzata la pagina Job Action in cui è possibile configurare ulteriormente il processo.

    Pagina Job Action nell'Utilità di pianificazione

Visualizzare la cronologia processo

  1. Per visualizzare la cronologia di esecuzione di un processo, inclusi i processi creati con WebJobs SDK, fare clic sul collegamento corrispondente nella colonna Log nel pannello dei processi Web. È possibile utilizzare l'icona degli Appunti per copiare l'URL della pagina del file di log negli Appunti, se lo si desidera.

    Collegamento Log

  2. Se si fa clic sul collegamento, viene visualizzata la pagina dei dettagli per il processo Web. In questa pagina è indicato il nome del comando eseguito, le ore delle ultime esecuzioni e il relativo esito positivo o negativo. In Recent job runsfare clic su un'ora per visualizzare ulteriori dettagli.

    WebJobDetails

  3. Verrà visualizzata la pagina WebJob Run Details . Fare clic su Toggle Output per visualizzare il testo dei contenuti del log. Il log di output è in formato testo.

    Dettagli dell'esecuzione del processo Web

  4. Per visualizzare il testo dell'output in un'altra finestra del browser, fare clic sul collegamento download . Per scaricare il testo stesso, fare clic con il pulsante destro del mouse sul collegamento e utilizzare le opzioni del browser in uso per salvare il contenuto del file.

    Download dell'output del log

  5. Il collegamento Processi Web nella parte superiore della pagina offre un modo pratico per ottenere un elenco di processi Web nel dashboard della cronologia.

    Collegamento all'elenco dei processi Web

    Elenco dei processi nel dashboard della cronologia

    Quando si fa clic su questi collegamenti, si viene reindirizzati alla pagina WebJob Details per il processo selezionato.

Note

  • Le app Web in modalità gratuita possono scadere dopo 20 minuti, se non vengono inviate richieste al sito scm (distribuzione) e se il portale dell'app Web non è aperto in Azure. Le richieste al sito effettivo non comportano la reimpostazione del timeout.
  • Il codice per un processo continuo deve essere scritto per l'esecuzione in un ciclo infinito.
  • I processi continui vengono eseguiti in modo continuo solo quando l'app è attiva.
  • Le modalità di base e standard offrono la funzionalità Sempre attivata che, se abilitata, impedisce alle app Web di diventare inattive.
  • È possibile solo eseguire il debug di processi Web con esecuzione continua. Il debug di processi Web pianificati o su richiesta non è supportato.

Passaggi successivi

Per altre informazioni, vedere l'articolo relativo alle risorse consigliate per i processi Web di Azure.