Edge computing med Cloudflare Workers og Deno · Lektion

Cron Triggers og scheduled Workers

Kør Cloudflare Workers efter en tidsplan med Cron Triggers for at automatisere tilbagevendende baggrundsopgaver på edge.

Lektion 4 af 413 trin

Cron Triggers og scheduled Workers er en gratis Edge computing med Cloudflare Workers og Deno-lektion på CoddyKit. Dette er lektion 4 af 4. Du kan læse hele lektionen gratis nedenfor — og derefter øve dig praktisk i browseren med en indbygget kodeeditor og en AI-vejleder, der er tilgængelig døgnet rundt. Den er en del af læringsforløbet i Edge computing med Cloudflare Workers og Deno, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Edge computing med Cloudflare Workers og Deno-kurset indeholder 4 lektioner i alt.

Hvorfor planlagte Workers?

Ud over at svare på HTTP-anmodninger kan Workers køre efter en tidsplan ved hjælp af Cron Triggers.

Det er perfekt til tilbagevendende job som:

  • Oprydning i forældede data i KV eller D1
  • Udsendelse af daglige rapporter via e-mail
  • Opdatering af cachede API-svar
  • Aggregere analyse-data

Der kræves ingen server, der altid er tændt. Workeren vågner ganske enkelt, kører og går i dvale igen.

Handleren scheduled()

En planlagt Worker eksporterer en scheduled()-handler i stedet for eller sammen med fetch().

Cloudflare kalder den automatisk på de tidspunkter, du angiver i cron-udtryk.

export default {
  async scheduled(event, env, ctx) {
    console.log('Triggered at: ' + event.scheduledTime);
  }
};

Konfiguration af Cron i wrangler.toml

Cron-tidsplaner findes i din wrangler.toml under sektionen [triggers].

Du kan angive flere cron-udtryk, som hver især kalder den samme scheduled()-handler.

[triggers]
crons = ["0 * * * *", "*/15 * * * *"]

Syntaks for cron-udtryk

Cloudflare-cron-udtryk har fem felter: minut, time, dag i måneden, måned og ugedag.

  • 0 0 * * * betyder midnat UTC hver dag
  • */5 * * * * betyder hvert 5. minut
  • 0 9 * * 1 betyder kl. 09.00 UTC hver mandag

Alle tidspunkter er angivet i UTC.

Sådan skelner du mellem flere cron-tidsplaner

Når du registrerer flere cron-tidsplaner, kan du bruge event.cron til at se, hvilken der blev udløst.

På den måde kan én Worker håndtere mange job.

export default {
  async scheduled(event, env, ctx) {
    if (event.cron === '0 0 * * *') {
      await runDailyCleanup(env);
    } else if (event.cron === '*/15 * * * *') {
      await refreshCache(env);
    }
  }
};

Brug af waitUntil til lange opgaver

Ligesom i fetch() holder metoden ctx.waitUntil() Workeren i live, indtil et promise er fuldført.

Brug den for at sikre, at asynkront arbejde i baggrunden bliver færdigt, før kaldet afsluttes.

async scheduled(event, env, ctx) {
  ctx.waitUntil(syncRemoteData(env));
}

Adgang til bindinger i scheduled()

Argumentet env viser alle dine bindinger: KV, D1, R2, Queues og hemmeligheder.

En planlagt oprydning kan for eksempel slette udløbne KV-nøgler.

async scheduled(event, env, ctx) {
  const list = await env.MY_KV.list({ prefix: 'session:' });
  for (const key of list.keys) {
    await env.MY_KV.delete(key.name);
  }
}

Test af cron lokalt

Wrangler lader dig teste planlagte handlere uden at vente på den rigtige tidsplan.

Kør wrangler dev, og udløs handleren via testslutpunktet, eller brug CLI-flaget.

wrangler dev --test-scheduled
# then visit:
# http://localhost:8787/__scheduled?cron=0+*+*+*+*

Kombination af fetch() og scheduled()

En enkelt Worker kan eksportere begge handlere.

Det er praktisk, når den samme logik både håndterer HTTP-anmodninger og kører efter en timer.

export default {
  async fetch(request, env) {
    return new Response('Hello from fetch');
  },
  async scheduled(event, env, ctx) {
    console.log('Hello from cron');
  }
};

Overvågning af planlagte kørsler

Cron-kald vises i Cloudflare-dashboardet og i loggene fra wrangler tail.

Hold øje med fejl. En udløst fejl betyder, at jobbet ikke blev fuldført, og cron-triggere har ingen automatisk genkørsel.

wrangler tail --format pretty

Begrænsninger og bedste praksis

Hold planlagte job effektive:

  • Hold dig inden for grænserne for CPU-tid, og overlad tungt arbejde til Queues
  • Gør job idempotente, så det er sikkert at køre dem igen
  • Undgå tidsplaner med intervaller på under ét minut, medmindre det er nødvendigt
  • Log resultaterne, så de kan observeres

Hurtigt tjek

Hvilken egenskab fortæller dig, hvilken cron-tidsplan der udløste handleren?

Opsummering

Du har lært, hvordan du kører Workers efter en tidsplan:

  • Eksportér en scheduled()-handler
  • Definér tidsplaner i [triggers] crons
  • Brug cron-udtryk med fem UTC-felter
  • Dirigér med event.cron, og hold arbejdet i live med ctx.waitUntil()
  • Test med --test-scheduled, og overvåg med wrangler tail

Cron Triggers gør Workers til pålidelige, edge-native kørere af baggrundsjob.

Gratis at komme i gang

Lær Edge computing med Cloudflare Workers og Deno med en AI-underviser — gratis

Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.

Kurser
12
Lektioner
47

Ofte stillede spørgsmål

Er lektionen “Cron Triggers og scheduled Workers” gratis?

Ja — hele teksten til “Cron Triggers og scheduled Workers” kan læses gratis her på nettet. Hvis du vil øve dig interaktivt med en indbygget kodeeditor og en AI-vejleder døgnet rundt og få adgang til resten af Edge computing med Cloudflare Workers og Deno-kurset, skal du opgradere til CoddyKit PRO. Edge computing med Cloudflare Workers og Deno-kurset indeholder 4 lektioner i alt.

Hvad lærer jeg i “Cron Triggers og scheduled Workers”?

Kør Cloudflare Workers efter en tidsplan med Cron Triggers for at automatisere tilbagevendende baggrundsopgaver på edge. Du øver dig i Edge computing med Cloudflare Workers og Deno med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.

Skal jeg have erfaring for at begynde på Edge computing med Cloudflare Workers og Deno?

Der kræves ingen tidligere erfaring. Edge computing med Cloudflare Workers og Deno på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 4 af 4.

Hvor lang tid tager lektionen “Cron Triggers og scheduled Workers”?

De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.

Kan jeg skrive og køre kode i denne Edge computing med Cloudflare Workers og Deno-lektion?

Ja. Alle Edge computing med Cloudflare Workers og Deno-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.

Alle lektioner i dette kursus

  1. WebSockets og realtid
  2. Queues og asynkrone opgaver
  3. Service Bindings og integrationer
  4. Cron Triggers og scheduled Workers
← Tilbage til Edge computing med Cloudflare Workers og Deno