Crea e configura cron job

Mantieni tutto organizzato con le raccolte Salva e classifica i contenuti in base alle tue preferenze.

Target Pub/Sub

Se scegli il tipo di destinazione Pub/Sub:

  1. Specifica il nome dell'argomento in cui verrà pubblicato il job. Questo è un argomento Pub/Sub che hai già configurato nel progetto.

  2. Specifica un messaggio da inviare all'argomento. Questo viene inviato come parametro data all'interno del messaggio Pub/Sub. Per un esempio, consulta la Guida rapida.

  3. Aggiungi gli attributi del messaggio che ti servono.

  4. Imposta eventuali configurazioni aggiuntive utilizzando la sezione Configure optional settings.

Cloud Scheduler pubblicherà i messaggi in questo argomento come account di servizio delle API di Google.

Target HTTP App Engine

Se scegli il tipo di destinazione App Engine HTTP, devi utilizzare l'app App Engine e la regione associata al progetto corrente. Se vuoi utilizzare un'altra app App Engine al di fuori del progetto corrente, scegli HTTP come target, non HTTP App Engine.

Imposta il modulo come segue:

  1. Nell'elenco Tipo di target, seleziona HTTP di App Engine.

  2. Specifica il nome del servizio App Engine che esegue il gestore per il job di Cloud Scheduler. Se omesso, viene utilizzato il servizio default. Se vuoi impostarlo, puoi trovare i nomi dei servizi nella Google Cloud Console.

  3. (Facoltativo) Specifica la versione. Se il criterio non viene configurato, viene usata la versione attualmente in uso. Puoi trovare le versioni disponibili in Google Cloud Console.

  4. Facoltativamente, puoi specificare l'istanza. Se non viene configurato, può essere utilizzata qualsiasi istanza disponibile. Puoi trovare le versioni disponibili in Google Cloud Console.

  5. Specifica l'URL relativo dell'endpoint di App Engine che il job contatterà. Se utilizzi il valore predefinito /, il job utilizzerà PROJECT-ID.appspot.com, dove PROJECT-ID è l'ID progetto corrente.

  6. Imposta il metodo HTTP da utilizzare durante l'esecuzione del job. Il valore predefinito è POST.

  7. Aggiungi eventuali intestazioni necessarie per la richiesta.

  8. Facoltativamente, puoi specificare i dati del corpo da inviare alla destinazione. Questi dati vengono inviati nel corpo della richiesta come byte quando è selezionato il metodo HTTP POST o PUT.

Gli endpoint di App Engine scelti come target devono essere nello stesso progetto e possono essere protetti con login: admin nell'elemento handlers del file app.yaml.

Target HTTP

Se scegli il tipo di destinazione HTTP:

  1. Specifica l'URL completo dell'endpoint che il job contatterà.

  2. Specifica il metodo HTTP. Il valore predefinito è POST.

  3. Facoltativamente, puoi specificare i dati da inviare alla destinazione. Questi dati vengono inviati nel corpo della richiesta come byte quando è selezionato il metodo HTTP POST o PUT.

  4. Aggiungi le intestazioni necessarie.

  5. Per creare un job di destinazione HTTP che richiede l'autenticazione, consulta Utilizzare l'autenticazione con target HTTP.

Gli endpoint HTTP scelti come target devono essere accessibili pubblicamente.

Puoi utilizzare Cloud Scheduler per configurare unità di lavoro pianificate, note come cron job, che vengono inviate a target in una pianificazione ricorrente, detta anche intervallo di frequenza o frequenza.

Deve essere eseguita una sola istanza di un job alla volta. In circostanze rare, è possibile che più istanze dello stesso job vengano richieste. Di conseguenza, il gestore di richieste dovrebbe essere idempotente e il tuo codice deve assicurare che non si verifichino effetti collaterali dannosi.

Cloud Scheduler è destinato alla ripetizione di job. Se devi eseguire un job solo una volta, valuta la possibilità di utilizzare Cloud Tasks, che può pianificare un'attività con un massimo di 30 giorni di anticipo.

Prima di iniziare

Assicurati di aver configurato l'ambiente per Cloud Scheduler.

Crea un job

Puoi creare un job utilizzando Google Cloud Console o Google Cloud CLI.

console

  1. In Google Cloud Console, vai a Cloud Scheduler.

    Vai a Cloud Scheduler

  2. Fai clic su Crea job.

  3. Nel campo Nome, assegna un nome al job univoco per il progetto.

    Dopo aver eliminato il job associato, puoi riutilizzare un nome di job in un progetto.

  4. Nell'elenco Area geografica, seleziona una regione.

    Se utilizzi un target HTTP App Engine, devi scegliere la stessa regione della tua app App Engine. Per ulteriori informazioni, consulta la sezione Aree geografiche supportate per target.

  5. Facoltativamente, fornisci una breve descrizione del lavoro, ad esempio un promemoria di quello che fa.

    Questa descrizione viene visualizzata nella console accanto al nome del job.

  6. Specifica la frequenza di esecuzione del job, utilizzando una stringa di configurazione.

    Ad esempio, la stringa 0 1 * * 0 esegue il job una volta alla settimana alle 01:00 ogni domenica mattina. La stringa fornita qui può essere qualsiasi stringa compatibile con unix-cron. Per ulteriori informazioni, consulta la pagina Configurare le pianificazioni dei cron job.

  7. Nell'elenco Fuso orario, scegli il fuso orario da utilizzare per la pianificazione del job.

  8. Fai clic su Continua.

  9. Specifica il Tipo di target:

    • HTTP: l'endpoint HTTP scelto come target deve essere accessibile pubblicamente.

    • Pub/Sub: devi specificare il nome dell'argomento Pub/Sub che hai già configurato nel tuo progetto e in cui verrà pubblicato il job.

    • HTTP App Engine: devi usare l'app App Engine e la regione associata al progetto corrente.

  10. Fai clic su Continua.

  11. Facoltativamente, per configurare qualsiasi comportamento di ripetizione, fai clic su Configura impostazioni facoltative. Per specificare la durata, utilizza una sequenza di numeri interi non negativi decimali con i seguenti suffissi di unità:

    • H - ora
    • m - minuto
    • S - secondo
    • ms - millisecondo
    • us - microsecondo
    • ns - nanosecondo

    Non sono consentiti valori negativi e frazionari. Il campo Max retry duration supporta solo i valori h,m e s. Sia Min backoff duration sia Max backoff duration supportano l'insieme completo.

  12. Facoltativamente, per i target HTTP e App Engine, configura una scadenza per i tentativi del job. Se il gestore di richieste non risponde entro questa scadenza, la richiesta viene annullata e il tentativo viene contrassegnato come non riuscito. Cloud Scheduler riprova il job in base alla configurazione nuovi tentativi.

  13. Per creare e salvare il job, fai clic su Crea.

    Il job verrà eseguito alla frequenza specificata.

gcloud

Quando crei un job mediante l'interfaccia a riga di comando gcloud, utilizzi i comandi diversi per ogni tipo di target:

HTTP

Puoi inviare una richiesta a qualsiasi endpoint HTTP o HTTPS. Gli endpoint HTTP scelti come target devono essere accessibili pubblicamente.

gcloud scheduler jobs create http JOB \
    --location=LOCATION \
    --schedule=SCHEDULE \
    --uri=URI

Sostituisci quanto segue:

  • JOB: un nome job che deve essere univoco nel progetto. Tieni presente che non puoi riutilizzare un nome job in un progetto anche se elimini il job associato.

  • LOCATION: deve essere la stessa località dell'app App Engine.

  • SCHEDULE: frequenza o intervallo di job, a cui verrà eseguito il job, ad esempio every 3 hours. La stringa fornita qui può essere qualsiasi stringa compatibile con unix-cron. Anche se non ne consigliamo più l'utilizzo, la sintassi cron di App Engine legacy è ancora supportata per i job esistenti.

    Per ulteriori informazioni, consulta la pagina Configurare le pianificazioni dei cron job.

  • URI: l'URI completo dell'endpoint che il job contatterà.

Gli altri parametri sono descritti nel riferimento dalla riga di comando gcloud:

  • (Facoltativo) Specifica il metodo HTTP. Il valore predefinito è POST.

  • Facoltativamente, puoi specificare i dati da inviare alla destinazione. Questi dati vengono inviati nel corpo della richiesta come byte quando è selezionato il metodo HTTP POST o PUT.

  • Facoltativamente, imposta i valori dei nuovi tentativi, che specificano la modalità di ripetizione del job App Engine in caso di errore. Nella maggior parte dei casi, i valori predefiniti saranno sufficienti.

  • Per creare un job di destinazione HTTP che richiede l'autenticazione, consulta la pagina relativa all'utilizzo dell'autenticazione con target HTTP.

Esempio

gcloud scheduler jobs create http my-http-job \
    --schedule "0 1 * * 0" \
    --uri "http://myproject/my-url.com" \
    --http-method GET

Pub/Sub

Devi utilizzare un argomento Pub/Sub che hai già configurato nel progetto. Cloud Scheduler pubblicherà i messaggi in questo argomento come account di servizio API di Google.

gcloud scheduler jobs create pubsub JOB \
    --location=LOCATION \
    --schedule=SCHEDULE \
    --topic=TOPIC

Sostituisci quanto segue:

  • JOB: un nome job che deve essere univoco nel progetto. Tieni presente che non puoi riutilizzare un nome job in un progetto anche se elimini il job associato.

  • LOCATION: deve essere la stessa località dell'app App Engine.

  • SCHEDULE: frequenza o intervallo di job, a cui verrà eseguito il job, ad esempio every 3 hours. La stringa fornita qui può essere qualsiasi stringa compatibile con unix-cron. Anche se non ne consigliamo più l'utilizzo, la sintassi cron di App Engine legacy è ancora supportata per i job esistenti.

    Per ulteriori informazioni, consulta la pagina Configurare le pianificazioni dei cron job.

  • TOPIC: il nome dell'argomento in cui verrà pubblicato il job. Utilizza il flag --message-body o --message-body-from-file per specificare un messaggio da inviare all'argomento. Questo viene inviato come parametro data all'interno del messaggio Pub/Sub. Per un esempio di questa procedura, consulta la guida rapida.

Gli altri parametri sono descritti nel riferimento dalla riga di comando gcloud.

Esempio

gcloud scheduler jobs create pubsub myjob \
    --schedule "0 1 * * 0" \
    --topic cron-topic \
    --message-body "Hello"

HTTP App Engine

La destinazione App Engine HTTP è disponibile solo per l'app App Engine associata al progetto corrente. Se vuoi utilizzare un'altra app App Engine al di fuori del tuo progetto corrente, scegli HTTP come target, non App Engine HTTP.

Gli endpoint App Engine possono essere protetti con login: admin nell'elemento handlers del file app.yaml.

gcloud scheduler jobs create app-engine \
    --JOB=JOB \
    --location=LOCATION \
    --schedule=SCHEDULE

Sostituisci quanto segue:

  • JOB: un nome job che deve essere univoco nel progetto. Tieni presente che non puoi riutilizzare un nome job in un progetto anche se elimini il job associato.

  • LOCATION: deve essere la stessa località dell'app App Engine.

  • SCHEDULE: frequenza o intervallo di job a cui verrà eseguito il job, ad esempio every 3 hours. La stringa fornita qui può essere qualsiasi stringa compatibile con unix-cron. Anche se non ne consigliamo più l'utilizzo, la sintassi cron di App Engine legacy è ancora supportata per i job esistenti.

    Per ulteriori informazioni, consulta la pagina Configurare le pianificazioni dei cron job.

Gli altri parametri sono descritti nel riferimento dalla riga di comando gcloud:

  • Specifica l'URL relativo dell'endpoint di App Engine che il job contatterà. Se utilizzi il valore predefinito /, il job utilizzerà PROJECT-ID.appspot.com, dove PROJECT-ID è l'ID progetto corrente.

  • Specifica il nome del servizio App Engine che esegue il gestore per il job di Cloud Scheduler. Se omesso, viene utilizzato il servizio default. Se vuoi impostarlo, puoi trovare i nomi dei servizi in Google Cloud Console.

  • Facoltativamente, imposta il metodo HTTP che vuoi utilizzare durante l'esecuzione del job. Il valore predefinito è POST.

  • (Facoltativo) Specifica la versione. Se il criterio non viene configurato, viene usata la versione attualmente in uso. Puoi trovare le versioni disponibili in Google Cloud Console.

  • Facoltativamente, puoi specificare l'istanza. Se non viene configurato, è possibile utilizzare qualsiasi istanza disponibile. Puoi trovare le versioni disponibili in Google Cloud Console.

  • Facoltativamente, puoi specificare i dati da inviare alla destinazione. Questi dati vengono inviati nel corpo della richiesta come byte quando è selezionato il metodo HTTP POST o PUT.

  • Facoltativamente, imposta i valori dei nuovi tentativi, che specificano la modalità di ripetizione del job App Engine in caso di errore. Nella maggior parte dei casi, i valori predefiniti sono sufficienti.

Esempio

gcloud scheduler jobs create app-engine my-appengine-job \
    --schedule "0 1 * * 0" \
    --relative-url "/cron-handler"

Modifica un job

Puoi modificare la configurazione di un job.

console

  1. In Google Cloud Console, vai a Cloud Scheduler.

    Vai a Cloud Scheduler

  2. Seleziona il job da modificare.

  3. Fai clic su Modifica.

  4. Segui i passaggi per definire la pianificazione, configurare l'esecuzione e configurare le impostazioni facoltative quando crei un job.

gcloud

Quando modifichi un job mediante l'interfaccia a riga di comando gcloud, utilizzi i comandi diversi per ogni tipo di target:

HTTP

Puoi inviare una richiesta a qualsiasi endpoint HTTP o HTTPS. Gli endpoint HTTP scelti come target devono essere accessibili pubblicamente.

gcloud scheduler jobs update http JOB \
    --location=LOCATION \
    --schedule=SCHEDULE \
    --uri=URI

Sostituisci quanto segue:

  • JOB: un nome job che deve essere univoco nel progetto. Tieni presente che non puoi riutilizzare un nome job in un progetto anche se elimini il job associato.

  • LOCATION: deve essere la stessa località dell'app App Engine.

  • SCHEDULE: frequenza o intervallo di job, a cui verrà eseguito il job, ad esempio every 3 hours. La stringa fornita qui può essere qualsiasi stringa compatibile con unix-cron. Anche se non ne consigliamo più l'utilizzo, la sintassi cron di App Engine legacy è ancora supportata per i job esistenti.

    Per ulteriori informazioni, consulta la pagina Configurare le pianificazioni dei cron job.

  • URI: l'URI completo dell'endpoint che il job contatterà.

Gli altri parametri sono descritti nel riferimento dalla riga di comando gcloud.

Esempio

gcloud scheduler jobs update http my-http-job \
    --schedule "0 1 * * 0" \
    --uri "http://myproject/my-url.com" \
    --http-method GET

Pub/Sub

Devi utilizzare un argomento Pub/Sub che hai già configurato nel progetto. Cloud Scheduler pubblicherà i messaggi in questo argomento come account di servizio API di Google.

gcloud scheduler jobs update pubsub JOB \
    --location=LOCATION \
    --schedule=SCHEDULE \
    --topic=TOPIC

Sostituisci quanto segue:

  • JOB: un nome job che deve essere univoco nel progetto. Tieni presente che non puoi riutilizzare un nome job in un progetto anche se elimini il job associato.

  • LOCATION: deve essere la stessa località dell'app App Engine.

  • SCHEDULE: frequenza o intervallo di job a cui verrà eseguito il job, ad esempio every 3 hours. La stringa fornita qui può essere qualsiasi stringa compatibile con unix-cron. Anche se non ne consigliamo più l'utilizzo, la sintassi cron di App Engine legacy è ancora supportata per i job esistenti.

    Per ulteriori informazioni, consulta la pagina Configurare le pianificazioni dei cron job.

  • TOPIC: il nome dell'argomento in cui verrà pubblicato il job. Utilizza il flag --message-body o --message-body-from-file per specificare un messaggio da inviare all'argomento. Questo viene inviato come parametro data all'interno del messaggio Pub/Sub. Per un esempio di questa procedura, consulta la guida rapida.

Gli altri parametri sono descritti nel riferimento dalla riga di comando gcloud.

Esempio

gcloud scheduler jobs update pubsub myjob \
    --schedule "0 1 * * 0" \
    --topic cron-topic --message-body "Hello"

HTTP App Engine

La destinazione App Engine HTTP è disponibile solo per l'app App Engine associata al progetto corrente. Se vuoi utilizzare un'altra app App Engine al di fuori del tuo progetto corrente, scegli HTTP come target, non App Engine HTTP.

Gli endpoint App Engine possono essere protetti con login: admin nell'elemento handlers del file app.yaml.

gcloud scheduler jobs update app-engine JOB \
    --location=LOCATION \
    --schedule=SCHEDULE

Sostituisci quanto segue:

  • JOB: un nome job che deve essere univoco nel progetto. Tieni presente che non puoi riutilizzare un nome job in un progetto anche se elimini il job associato.

  • LOCATION: deve essere la stessa località dell'app App Engine.

  • SCHEDULE: frequenza o intervallo di job a cui verrà eseguito il job, ad esempio every 3 hours. La stringa fornita qui può essere qualsiasi stringa compatibile con unix-cron. Anche se non ne consigliamo più l'utilizzo, la sintassi cron di App Engine legacy è ancora supportata per i job esistenti.

    Per ulteriori informazioni, consulta la pagina Configurare le pianificazioni dei cron job.

Gli altri parametri sono descritti nel riferimento dalla riga di comando gcloud.

Esempio

gcloud scheduler jobs update app-engine my-appengine-job \
    --schedule "0 1 * * 0" \
    --relative-url "/cron-handler"

Mettere in pausa un job

Puoi mettere in pausa l'esecuzione di un job.

console

  1. In Google Cloud Console, vai a Cloud Scheduler.

    Vai a Cloud Scheduler

  2. Seleziona il job da mettere in pausa.

  3. Fai clic su Metti in pausa.

gcloud

  1. Apri una finestra del terminale sulla macchina in cui hai installato l'interfaccia a riga di comando gcloud.

  2. Esegui il comando:

    gcloud scheduler jobs pause MY_JOB
    

    Sostituisci MY_JOB con il nome del job per metterlo in pausa.

Mentre un job è in pausa, puoi anche modificarlo. Dopo aver modificato il job, questo rimane in pausa finché non lo riprendi.

Riprendi un job

Puoi riprendere l'esecuzione di un job in pausa.

console

  1. In Google Cloud Console, vai a Cloud Scheduler.

    Vai a Cloud Scheduler

  2. Seleziona il job da riprendere.

    Il job deve essere già in pausa.

  3. Fai clic su Riprendi.

gcloud

  1. Apri una finestra del terminale sulla macchina in cui hai installato l'interfaccia a riga di comando gcloud.

  2. Esegui il comando:

    gcloud scheduler jobs resume MY_JOB
    

    Sostituisci MY_JOB con il nome del job per riprendere.

Elimina un job

Puoi eliminare un job.

console

  1. In Google Cloud Console, vai a Cloud Scheduler.

    Vai a Cloud Scheduler

  2. Seleziona il job da eliminare.

  3. Fai clic su Elimina.

gcloud

  1. Apri una finestra del terminale sulla macchina in cui hai installato l'interfaccia a riga di comando gcloud.

  2. Esegui il comando:

    gcloud scheduler jobs delete MY_JOB
    

    Sostituisci MY_JOB con il nome del job da eliminare.