Comments (2)
hi, you can write something like this. i'm using version 0.8.0-next.13.
import { start } from 'worktop/cfw'
import type { Module } from 'worktop/cfw'
const worker: Module.Worker = start(API.run)
worker.scheduled = (e, env, ctx) => {
ctx.waitUntil(triggerScheduledEvent(e, env, ctx))
}
export default worker
async function triggerScheduledEvent(e, env, ctx) {
switch (e.cron) {
// Up to three schedules.
case `0 7,19 * * *`:
break
case `*/10 * * * *`:
break
case `*/45 * * * *`:
break
}
}
from worktop.
Yup, what @universse shared is correct if you want the same Worker to handle both trigger types.
There's also a define
export from the worktop/cfw
module, which provides type information while writing the fetch
and/or scheduled
handlers. There's no "start" equivalent that's meant to handle both triggers at once because – IMO – Worker Cron handlers should not coexist with public fetch
code... I've seen too many times where developers accidentally leak out information and/or make themselves susceptible to public requests accidentally calling should-be-private functions. So scheduled
and fetch
should be split out into separate Workers, in which case, a scheduled
Worker looks like this:
import { define } from 'worktop/cfw';
export default define({
scheduled(event, bindings) {
// i have access to type defs
}
});
// or
export default define<MyBindings>({
scheduled(event, bindings) {
// bindings === MyBindings
}
});
Separately, I find Worker Crons exceptionally useless. They're not configurable – you can only dispatch GET
requests (effectively) and there's no "custom payload" that you can include in the dispatched message. Every other Cron service allows you to schedule a POST
request w/ arbitrary data for your handler to process (and this can be done programmatically)... not Cloudflare. Instead, most handlers need to "wake up" and then switch
on the CRON pattern itself (lol wat) or wait on some blocking external request to figure out what it should be doing/handling. It's so silly. I advocated internally for this to get added to the roadmap & it was repeatedly a deadend.
Until that happens, most applications may be better off using a GCP scheduler that sends an authenticated HTTP request to your Worker(s)
from worktop.
Related Issues (20)
- Using Worktop in a Pages website HOT 3
- Use Sveltekit and worktop together? HOT 2
- How to set multiple cookies? HOT 2
- Worktop Middlewares Example HOT 4
- Durable Objects example HOT 2
- The example of timing requests might be misleading HOT 1
- Using official Cloudflare types HOT 4
- Can I use Worktop with Fastly Compute@Edge? HOT 1
- Is it going to be official by cloudflare?
- Cache API and KV: Concerns/Questions/Usage HOT 1
- How to access `.env` with Wrangler 2 HOT 2
- Provide a "test" module HOT 4
- Serving HTML files HOT 6
- Is `worktop@next` safe to use in production? HOT 2
- Add generic typing for Router.add handler
- The uploaded script has no registered event handlers. [API code: 10068] HOT 1
- Add sub-routers HOT 2
- Node 16+ ESM TypeScript error HOT 1
- `isCacheable` allowed cache by default if the `cache-control` header is empty may leading to a security flaw in ssg content HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from worktop.