I web job sono uno strumento comodissimo per chi sviluppa applicazioni web, perché permette di andare oltre al processo web e di mettere in piedi processi continui o ripetitivi in qualunque linguaggio vogliamo.
Essi si affiancano e vivono all'interno dello stesso service plan dell'applicazione web. Questo significa che se la bilanciamo su più istanze, per affrontare più carichi, anche i web job verranno replicati e saranno presenti con più processi, uno per web job per istanza. Se questo è ottimo in contesti di scalabilità, può non esserlo in processi dove necessitiamo una singola istanza, per evitare concorrenza nelle operazioni.
Per ovviare a questo problema possiamo configurare il web job affinché sia in modalità singleton. Abbiamo due modi per farlo: il primo è quello di creare e pubblicare un file settings.job, dove presente anche l'eseguibile, contenente il seguente Json.
{ "is_singleton": true }
Il secondo modo consiste invece nel pubblicare il web job e usare le API REST. Nello specifico occorre chiamare il seguente indirizzo, con i nomi corretti.
https://[nomeSito].scm.azurewebsites.net/api/continuouswebjobs/[nomeJob]/settings
Se lo chiamiamo con GET otterremo l'impostazione corrente, probabilmente vuota, altrimenti possiamo fare una chiamata in PUT, con il medesimo Json indicato in precedenza.
Da questo momento in poi solo un'istanza tra tutte quelle presenti verrà eseguita. Per approfondimenti:
https://github.com/projectkudu/kudu/wiki/WebJobs-API
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Gestione dei nomi con le regole @layer in CSS
Disabilitare le run concorrenti di una pipeline di Azure DevOps
Evitare (o ridurre) il repo-jacking sulle GitHub Actions
Supportare lo HierarchyID di Sql Server in Entity Framework 8
Ricevere notifiche sui test con Azure Load Testing
Sfruttare GPT-4o realtime su Azure Open AI per conversazioni vocali
Proteggere le risorse Azure con private link e private endpoints
Testare l'invio dei messaggi con Event Hubs Data Explorer
Bloccare l'esecuzione di un pod in mancanza di un'artifact attestation di GitHub
Popolare una classe a partire dal testo, con Semantic Kernel e ASP.NET Core Web API
Utilizzare Copilot con Azure Cosmos DB
Configurare e gestire sidecar container in Azure App Service
I più letti di oggi
- Autenticazione di git tramite Microsoft Entra ID in Azure DevOps
- Repaint, Reflow e Compositing: Come Funziona il Rendering nel Browser
- Usare i settings di serializzazione/deserializzazione di System.Text.Json di ASP.NET all'interno di un'applicazione non web
- Disabilitare le run concorrenti di una pipeline di Azure DevOps
- Chiamare direttamente un numero di telefono con HTML5