https://github.com/pharo-contributions/scheduler
An easy-to-use task scheduler that can run arbitrary blocks
https://github.com/pharo-contributions/scheduler
pharo
Last synced: 8 months ago
JSON representation
An easy-to-use task scheduler that can run arbitrary blocks
- Host: GitHub
- URL: https://github.com/pharo-contributions/scheduler
- Owner: pharo-contributions
- License: mit
- Created: 2020-05-20T21:12:21.000Z (about 6 years ago)
- Default Branch: master
- Last Pushed: 2023-09-22T06:38:14.000Z (over 2 years ago)
- Last Synced: 2025-04-11T01:40:02.235Z (about 1 year ago)
- Topics: pharo
- Language: Smalltalk
- Size: 86.9 KB
- Stars: 12
- Watchers: 9
- Forks: 3
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Scheduler
An easy-to-use **task scheduler** for [Pharo](https://www.pharo.org) that can run arbitrary blocks
[](https://github.com/pharo-contributions/Scheduler/actions?query=workflow%3ABuild)
[](https://codecov.io/gh/pharo-contributions/Scheduler/branch/master)
[](https://pharo.org/download)
[](https://pharo.org/download)
[](https://pharo.org/download)
[](https://pharo.org/download)
[](https://pharo.org/download)
## Quick start
```Smalltalk
Metacello new
repository: 'github://pharo-contributions/Scheduler/src';
baseline: 'Scheduler';
load
```
[](https://www.youtube.com/watch?v=NOr32YgdujI)
## Overview
An easy-to-use task scheduler that can run arbitrary blocks:
Every so often (e.g. every hour starting now)
- Daily at a given time
- Periodically starting at a given time (e.g. every other hour starting a noon)
- Per a provide schedule (e.g. using Schedule instance you can run tasks every Monday and Friday)
- A one time task at some point in the future
For ease of use tasks can be blocks passed to the scheduler (or any object that understands #value).
### Example 1
```Smalltalk
"Start a new task scheduler and keep it around"
scheduler := TaskScheduler new.
scheduler start.
```
### Example 2
```Smalltalk
"Let's save the image every hour"
scheduler
do: [Smalltalk snapshot: true andQuit: false]
every: 60 minutes.
```
### Example 3
```Smalltalk
"Let's run a backup at 2am every day"
scheduler
do: ["backup code here"]
at: '2am'
```
### Example 4
```Smalltalk
"Let's perform a bank transfer every other hour starting at 1pm"
scheduler
do: ["swiss bank account transfer code"]
at: '1pm'
every: 2 hours.
```
### Example 5
```Smalltalk
"Let's do a one time email reminder"
scheduler
doOnce: ["email reminder to go on honeymoon"]
at: '2005-1-15T8:00'
```
### Example 6
```Smalltalk
"Let's do a one time email reminder"
"You can delete tasks by sending #delete to them"
(scheduler taskAt: 1) delete
```
### Example 7
```Smalltalk
"Stop the scheduler from running -- but don't delete its tasks"
scheduler stop.
```
Read the provided tests for more examples.