I am looking at dart from server side point of view.
Is there a scheduler that can execute isolates at a specific time or X times an hour? I am thinking on the lines of Quartz in the Java world.
Cron Job in flutter are used to run function at certain time interval. For Example: Suppose you want to call function every 1 minute, hour, day or month then flutter cron job libray is very useful its also called as time based job scheduler.
Dart has a few options for delayed and repeating tasks, but I'm not aware of a port of Quartz to Dart (yet... :)
Here are the basics:
Timer
- simply run a function after some delayFuture
- more robust, composable, functions that return values "in the future"Stream
- robust, composable streams of events. Can be periodic.If you have a repeating task, I would recommend using Stream over Timer. Timer does not have error handling builtin, so uncaught exceptions can bring down your whole program (Dart does not have a global error handler).
Here's how you use a Stream to produce periodic results:
import 'dart:async';
main() {
var stream = new Stream.periodic(const Duration(hours: 1), (count) {
// do something every hour
// return the result of that something
});
stream.listen((result) {
// listen for the result of the hourly task
});
}
You specifically ask about isolates. You could spawn an isolate at program start, and send it a message every hour. Or, you can spawn the isolate at program start, and the isolate itself can run its own timer or periodic stream.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With