Vai al contenuto

Configurare e Distribuire WebJobs su Azure App Service Linux

Scopri come creare e gestire WebJobs in Azure App Service per ottimizzare le tue applicazioni.

I WebJobs rappresentano una funzionalità innovativa di Azure App Service che consente di eseguire operazioni in background all’interno delle proprie applicazioni. Questi strumenti si rivelano particolarmente efficaci per gestire compiti programmati, elaborazioni dati o attività di manutenzione automatica.

Questo articolo è una guida pratica per configurare e distribuire WebJobs su Azure App Service utilizzando Linux, includendo tutte le fasi necessarie per l’implementazione e la gestione efficace di queste risorse. Al termine di questa lettura, avrai creato con successo un WebJob capace di svolgere compiti in background e di elaborare dati secondo necessità.

Prerequisiti
Prima di procedere, è fondamentale assicurarsi di avere a disposizione i seguenti requisiti:

  • Abbonamento Azure: È necessario un abbonamento Azure attivo per creare e gestire risorse.
  • Servizio App Linux: È essenziale avere un App Service per implementare il WebJob. Il tipo di stack usato deve corrispondere a quello del WebJob, come ad esempio, un WebJob in Python richiede un App Service basato su Python.
  • Ambiente di Sviluppo Integrato: Ideale per sviluppare il tuo WebJob.
  • Strumento di Compressione File: Utile per impacchettare i file del WebJob in un archivio ZIP per la distribuzione.

Tipologie di WebJobs
Quando si sceglie il tipo di WebJob da utilizzare, è fondamentale considerare la natura del compito da eseguire. Le WebJobs continue sono progettate per rimanere attive in background, adatte a operazioni che necessitano permanenza, come il monitoraggio o l’elaborazione continua di dati. Queste rimangono attive finché l’App Service è operativo e vengono riavviate automaticamente in caso di malfunzionamenti.

D’altro canto, le WebJobs attivate si eseguono in base a specifici eventi o programmi, risultando ideali per operazioni da eseguire a orari definiti. Ad esempio, una WebJob attivata può eseguire aggiornamenti di dati programmati o rispondere ad eventi specifici come l’arrivo di nuove informazioni. La scelta tra una WebJob continua o attivata dipende dall’esigenza di operare costantemente o su eventi particolari.

Creazione di un WebJob
In questa sezione, realizzeremo un WebJob in Python che legge dati da un file CSV e li aggiorna. Di seguito un esempio semplificato di webjob.py:

import pandas as pdimport os, datetime, logging# Configurazione loglogging.basicConfig(    filename='/home/LogFiles/webjob.log',    level=logging.INFO,    format='%(asctime)s - %(levelname)s - %(message)s')def insert_record(file_path):    print('--- Inserting Record ---')    try:        # Determina il valore successivo        value = get_next_value(file_path)                # Crea un nuovo DataFrame con il nuovo record        new_record = pd.DataFrame({'Timestamp': [datetime.datetime.now()], 'Value': [value]})                if os.path.exists(file_path):            # Carica il file CSV esistente            df = pd.read_csv(file_path)            logging.info('File CSV caricato con successo.')            # Aggiungi il nuovo record            df = pd.concat([df, new_record], ignore_index=True)        else:            # Se il file non esiste, crea un nuovo DataFrame            df = new_record            logging.info('File CSV non trovato. Creato nuovo file con colonne: Timestamp, Value.')                # Salva il DataFrame aggiornato nel CSV        df.to_csv(file_path, index=False)        logging.info('File CSV aggiornato e salvato con successo con valore: %d', value)        except Exception as e:        logging.error('Errore durante l'elaborazione del record: %s', e)if __name__ == "__main__":    print('--- Inizio Esecuzione WebJob ---')    file_path = '/home/site/wwwroot/data.csv'    insert_record(file_path)    print('--- Fine Esecuzione WebJob ---')

Distribuzione di un WebJob
La distribuzione di un WebJob su App Service Linux comporta la creazione di uno script di shell, il suo impacchettamento e la successiva distribuzione tramite il Portale Azure.

Crea uno script di shell (script.sh) con il comando per avviare il WebJob. Per il WebJob Python, puoi utilizzare il seguente script per installare le dipendenze e eseguire lo script WebJob:

#!/bin/bash/opt/python/3.10.14/bin/pip3 install pandas/opt/python/3.10.14/bin/python3.10 webjob.py

Zip i file webjob.py e script.sh insieme, assicurandoti che siano presenti nella root dell’archivio compresso.

La distribuzione del WebJob richiede l’autenticazione base. Abilita le credenziali di pubblicazione tramite il blade di configurazione dell’App Service.

Successivamente, naviga nel blade WebJob dell’App Service per aggiungere e configurare il WebJob. Clicca sul pulsante “Aggiungi” per creare un nuovo WebJob. Nella scheda di configurazione:

  • Carica il File WebJob: Seleziona il file webjob.zip preparato.
  • Imposta Tipo WebJob: Scegli il tipo di WebJob—”Continuo” per un lavoro sempre attivo o “Attivato” per un lavoro eseguito su richiesta o secondo pianificazione.
  • Configura Pianificazione (se è un WebJob Attivato): Specifica l’espressione cron per la pianificazione del lavoro. Ad esempio, utilizza 0 */5 * * * per eseguirlo ogni 5 minuti.
  • Clicca su “OK” o “Salva” per caricare il WebJob e applicare la configurazione.

Testing e Registrazione
Per un WebJob attivato, puoi eseguirlo manualmente selezionando il WebJob e cliccando “Esegui”.

Su App Service Linux, i WebJobs vengono distribuiti sotto /tmp/jobs/. Per controllare i log, puoi visualizzarli cliccando sul pulsante Logs. Puoi navigare a /home/data/jobs/triggered/. Qui troverai una directory corrispondente a ciascuna esecuzione del WebJob. All’interno di ogni directory, troverai i file status e output_log.txt.

Il file di stato indica il programma impostato per il WebJob insieme al risultato dell’esecuzione. Potrai trova anche l’orario di inizio e fine dell’esecuzione.

Il file output_log.txt contiene informazioni generali e aggiornamenti di stato durante l’esecuzione. Qui troverai anche i log di esecuzione.

Esaminando questi log, potrai confermare lo stato operativo del WebJob, diagnosticare problemi e comprendere il suo comportamento durante l’esecuzione.

Con la configurazione dei WebJobs su Azure App Service Linux, hai a disposizione un potente strumento per eseguire task in background e automatizzare i processi applicativi, aumentando significativamente la funzionalità della tua applicazione.