Condividi tramite


Eseguire attività in background con i processi Web

Questo articolo illustra come distribuire processi Web usando il portale di Azure per caricare un eseguibile o uno script. WebJobs è una funzionalità del Servizio App di Azure che consente di eseguire un programma o uno script nella stessa istanza di un'App Web. Tutti i piani di servizio app supportano Processi Web. Non sono previsti costi aggiuntivi per l'uso di Processi Web.

Informazioni generali

Processi Web è una funzionalità del servizio app di Azure che consente di eseguire un programma o uno script nella stessa istanza di un'app Web. Tutti i piani di servizio app supportano Processi Web. Non sono previsti costi aggiuntivi per l'uso di Processi Web.

Se si usa Visual Studio anziché il servizio app di Azure per sviluppare e distribuire processi Web, vedere Sviluppare e distribuire processi Web con Visual Studio.

Funzioni di Azure consente di eseguire programmi e script in un altro modo. Per un confronto tra Processi Web e Funzioni, vedere Scegliere i servizi di integrazione e automazione corretti in Azure.

Tipi di processi Web

Tipi di file supportati per script e programmi

I seguenti tipi di file non sono supportati:

  • Uso di Cmd di Windows: .cmd, .bat, .exe
  • Uso di PowerShell: .ps1
  • Uso di Bash: .sh
  • Uso di Node.js: .js
  • Uso di Java: .jar

I runtime necessari per eseguire questi tipi di file sono già installati nell'istanza dell'app Web.

Confronto tra Processi Web continui e attivati

La tabella seguente descrive le differenze tra processi Web continui e attivati:

Continuo Attivato
Viene avviato immediatamente quando il processo Web viene creato. Per evitare che il processo termini, il programma o lo script in genere opera in un ciclo infinito. Se il processo termina, è possibile riavviarlo. In genere usato con WebJobs SDK. Viene avviato solo se attivato manualmente o in base a una pianificazione.
Viene eseguito in tutte le istanze in cui viene eseguita l'app Web. È facoltativamente possibile limitare il processo Web a una sola istanza. Viene eseguito in una singola istanza selezionata da Azure per il bilanciamento del carico.
Supporta il debug remoto. Non supporta il debug remoto.
Il codice viene distribuito in \site\wwwroot\app_data\Jobs\Continuous. Il codice viene distribuito in \site\wwwroot\app_data\Jobs\Triggered.

Nota

Un'app Web può raggiungere il timeout dopo 20 minuti di inattività e solo le richieste all'app Web effettiva possono reimpostare il timer. La visualizzazione della configurazione dell'app nel portale di Azure o l'esecuzione di richieste al sito degli strumenti avanzati non reimposta il timer. Se si imposta l'app Web che ospita il processo per l'esecuzione continua, l'esecuzione in base a una pianificazione o l'uso di trigger basati su eventi, abilitare l'impostazione Always On nel riquadro Configurazione di Azure dell'app Web. L'impostazione AlwaysOn consente di assicurarsi che questi tipi di processi Web vengano eseguiti in modo affidabile. Questa funzionalità è disponibile solo nei piani tariffari Basic, Standard e Premium.

Creare un processo Web continuo

Importante

Dopo aver configurato il controllo del codice sorgente per l'applicazione, Processi Web va distribuito come parte dell'integrazione del controllo del codice sorgente. Dopo aver configurato il controllo del codice sorgente per l'applicazione, non è possibile aggiungere un processo Web dal portale di Azure.

  1. Nel portale di Azure andare alla pagina Servizio app dell'app Web del servizio app, dell'app per le API o dell'app per dispositivi mobili.

  2. In Impostazioni nel riquadro sinistro selezionare Processi Web, quindi selezionare Aggiungi.

    Screenshot che mostra come aggiungere un WebJob in un'app di App Service nel portale.

  3. Compilare le impostazioni Aggiungi processo Web come specificato nella tabella e quindi selezionare Creare un processo Web.

    Screenshot che mostra come configurare un processo Web continuo a più istanze per un'app servizio app.

    Impostazione Valore di esempio Descrizione
    Nome myContinuousWebJob Nome unico del WebJob. Deve iniziare con una lettera o un numero e non deve contenere caratteri speciali diversi da "-" e "_".
    Caricamento file ConsoleApp.zip File ZIP che contiene il file eseguibile o il file di script e gli eventuali file di supporto necessari per eseguire il programma o lo script. I tipi di file di script o eseguibili supportati sono elencati nella sezione Tipi di file supportati.
    Tipo Continuo I tipi di processi Web sono descritti più indietro in questo articolo.
    Ridimensiona Istanze multiple Disponibile solo per i processi Web continui. Determina se il programma o lo script viene eseguito in tutte le istanze o in una sola istanza. L'opzione per l'esecuzione in più istanze non si applica ai piani tariffari Gratuito o Condiviso.
  4. Il nuovo processo Web viene visualizzato nella pagina Processi Web. Se viene visualizzato un messaggio che indica che il processo Web è stato aggiunto, ma non viene visualizzato, selezionare Aggiorna.

  5. Per arrestare o riavviare un processo Web continuo, fare clic con il pulsante destro del mouse sul processo Web nell'elenco e selezionare il pulsante Arresta o Esegui, quindi confermare la selezione.

    Screenshot che mostra come arrestare un WebJob continuo nel portale di Azure.

Creare un processo Web attivato manualmente

  1. Nel portale di Azure andare alla pagina Servizio app dell'app Web del servizio app, dell'app per le API o dell'app per dispositivi mobili.

  2. In Impostazioni nel riquadro sinistro selezionare Processi Web, quindi selezionare Aggiungi.

    Screenshot che mostra come aggiungere un WebJob in un'app del Servizio app nel portale (WebJob attivato manualmente).

  3. Compilare le impostazioni Aggiungi processo Web come specificato nella tabella e quindi selezionare Creare un processo Web.

    Screenshot che mostra come configurare un processo Web attivato manualmente per un'app del servizio app.

    Impostazione Valore di esempio Descrizione
    Nome myTriggeredWebJob Nome unico del WebJob. Deve iniziare con una lettera o un numero e non deve contenere caratteri speciali diversi da "-" e "_".
    Caricamento file ConsoleApp1.zip File ZIP che contiene il file eseguibile o il file di script e gli eventuali file di supporto necessari per eseguire il programma o lo script. I tipi di file di script o eseguibili supportati sono elencati nella sezione Tipi di file supportati.
    Tipo Attivato I tipi di processo Web sono descritti in precedenza in questo articolo.
    Trigger Manuale
  4. Il nuovo processo Web viene visualizzato nella pagina Processi Web. Se viene visualizzato un messaggio che indica che il processo Web è stato aggiunto, ma non viene visualizzato, selezionare Aggiorna.

  5. Per eseguire un processo Web attivato manualmente, fare clic con il pulsante destro del mouse sul processo Web nell'elenco e selezionare il pulsante Esegui, quindi confermare la selezione.

    Screenshot che mostra come eseguire un processo Web attivato manualmente nel portale di Azure.

Creare un processo Web pianificato

Viene attivato anche un processo Web pianificato. È possibile pianificare il trigger per l'esecuzione automatica in base alla pianificazione specificata.

  1. Nel portale di Azure andare alla pagina Servizio app dell'app Web del servizio app, dell'app per le API o dell'app per dispositivi mobili.

  2. In Impostazioni nel riquadro sinistro selezionare Processi Web, quindi selezionare Aggiungi.

    Screenshot che mostra come aggiungere un WebJob in un'app del servizio App nel portale (WebJob pianificato).

  3. Compilare le impostazioni Aggiungi processo Web come specificato nella tabella e quindi selezionare Creare un processo Web.

    Screenshot che mostra come configurare un processo Web pianificato in un'app del servizio app.

    Impostazione Valore di esempio Descrizione
    Nome myScheduledWebJob Nome unico del WebJob. Deve iniziare con una lettera o un numero e non deve contenere caratteri speciali diversi da "-" e "_".
    Caricamento file ConsoleApp.zip File ZIP che contiene il file eseguibile o il file di script e gli eventuali file di supporto necessari per eseguire il programma o lo script. I tipi di file di script o eseguibili supportati sono elencati nella sezione Tipi di file supportati.
    Tipo Attivato I tipi di processi Web sono descritti più indietro in questo articolo.
    Trigger Pianificati Per il corretto funzionamento della pianificazione, abilitare la funzionalità Sempre online. Sempre online è disponibile solo nei piani tariffari Basic, Standard e Premium.
    Espressione CRON 0 0/20 * * * * Le espressioni CRON vengono descritte nella sezione seguente.
  4. Il nuovo processo Web viene visualizzato nella pagina Processi Web. Se viene visualizzato un messaggio che indica che il processo Web è stato aggiunto, ma non viene visualizzato, selezionare Aggiorna.

  5. Il WebJob pianificato viene eseguito secondo la pianificazione definita dall'espressione CRON. Per eseguirlo manualmente in qualsiasi momento, fare clic con il pulsante destro del mouse sul processo Web nell'elenco e selezionare il pulsante Esegui, quindi confermare la selezione.

    Screenshot che mostra come eseguire un processo Web pianificato manualmente nel portale di Azure.

Espressioni NCRONTAB

Un'espressione NCRONTAB è simile a un'espressione CRON, ma include un sesto campo aggiuntivo all'inizio per la precisione temporale in secondi. È possibile immettere un'espressione NCRONTAB nel portale o includere un file settings.job nella radice del WebJob .zip, come nell'esempio seguente:

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

Per altre informazioni, vedere Pianificazione di un processo Web attivato.

Nota

Il fuso orario predefinito usato per eseguire le espressioni CRON è UTC (Coordinated Universal Time). Per fare in modo che l'espressione CRON eseguita sia basata su un altro fuso orario, creare un'impostazione per l'app per le funzioni denominata WEBSITE_TIME_ZONE. Per altre informazioni, vedere Fusi orari NCRONTAB.

Gestire Processi Web

È possibile gestire lo stato di esecuzione dei singoli processi Web in esecuzione nel sito usando il portale di Azure. Passare a Impostazioni>Processi Web, scegliere il processo Web e sarà possibile avviare e arrestare il processo Web. È anche possibile visualizzare e modificare la password del webhook che esegue il processo Web.

È anche possibile configurare un'impostazione dell'app denominata WEBJOBS_STOPPED con un valore di 1 per arrestare tutti i WebJobs in esecuzione nel sito. Si può usare questo metodo per impedire l'esecuzione di processi Web in conflitto sia negli slot di staging che in quelli di produzione. Analogamente, è possibile usare un valore 1 per l'impostazione WEBJOBS_DISABLE_SCHEDULE per disabilitare i processi Web attivati nel sito o in uno slot di staging. Per gli slot, ricordarsi di abilitare l'opzione Impostazione slot di distribuzione in modo che l'impostazione stessa non venga sostituita.

Visualizzare la cronologia processo

  1. Per il processo Web che si vuole visualizzare, selezionare Log.

    Screenshot che mostra come accedere ai log di un WebJob.

  2. Nella pagina WebJob Details (Dettagli processo Web) selezionare un'ora per visualizzare i dettagli di un'esecuzione.

    Screenshot che mostra come scegliere un'esecuzione di un WebJob per visualizzare i log dettagliati.

  3. Nella pagina Dettagli esecuzione processo Web è possibile selezionare scarica per ottenere un file di testo dei log oppure selezionare il collegamento di navigazione Processi Web nella parte superiore della pagina per visualizzare i log per un processo Web diverso.

Stato WebJob

Di seguito è riportato un elenco di stati comuni di WebJob.

  • Inizializzazione: l'app è stata avviata e il WebJob sta eseguendo il processo di inizializzazione.
  • Avvio: Il WebJob si sta avviando.
  • In esecuzione: il WebJob è in esecuzione.
  • PendingRestart: un processo Web continuo viene chiuso in meno di due minuti dall'avvio per qualsiasi motivo e il servizio app attende 60 secondi prima di riavviare il processo Web. Se il processo Web continuo viene chiuso dopo il limite di due minuti, il servizio app non attende 60 secondi e riavvia immediatamente il processo Web.
  • Arrestato: il processo Web è stato arrestato (in genere dal portale di Azure) e non è attualmente in esecuzione e non verrà eseguito fino a quando non viene avviato di nuovo manualmente, anche per un processo Web continuo o pianificato.
  • Interrotto: questo può verificarsi per molti motivi, ad esempio quando un processo Web a esecuzione prolungata raggiunge il marcatore di timeout.

Passo successivo

Esercitazione: Eseguire attività in background con processi Web