Unlike the alternatives, Rocketry’s scheduler is statement-based. Rocketry natively supports the same scheduling strategies as the other options, including cron and task pipelining, but it can also be arbitrarily extended using custom scheduling statements.

That’s pretty useful! I used to struggle to shove conditionals in to my cron jobs. Example time:

``` from rocketry.conds import daily, time_of_week from pathlib import Path

@app.cond() def file_exists(file): return Path(file).exists()

@app.task(daily.after("08:00") & file_exists("myfile.csv")) def do_work(): ...

```

Discuss on Changelog News