recurry v0.0.27
Recurry
recurrent REST call scheduler
Note: for delayed jobs please use a queue like kue
These days almost anything can be triggered using REST calls, so meet Recurry. Recurry does recurring REST calls, with a nice degree of (remote) control.
You can think of recurry as cron+flock on a unix platform, except without the files (but a REST interface).
Usage
$ npm install recurry coffee-script
$ echo '{"cache":{"scheduler":[],"timers":[]}}' > cache.json
$ RECURRY_CACHEFILE="cache.json" ./server
NOTE: Recurry supports persistance, but does not require a database (instead it uses a local jsonfile)
Hubot interface
Instead of fiddling with crontab-files, the recurry-hubot
module allows hubot interfacing with the REST api:
- starting, stopping, pausing, resuming recurring REST calls
- adding and removing REST calls including payload
Make sure you run npm install recurry-hubot
in your hubot rootdir, and get in control:
hubot> recurry
id method url payload scheduler triggered triggered_last status timer
----------- ------ --------------------------- ------- --------- --------- ------------------------ ------- -----
ping post http://foo.com/ping {} 1 minutes 1235 2015-06-12T13:35:49.173Z start'd {}
pushjob post http://queue.foo.com/ping {} 5 minutes 54 2015-06-12T13:35:49.173Z start'd {}
flapjob post http://queue.foo.com/flap {} 5 minutes 54 2015-06-12T13:35:49.173Z start'd {}
...
JSON API
Documentation of API endpoints
GET /scheduler/remove/:id
stops and removes a scheduler
PUT /scheduler/trigger/:id
manually triggers a scheduler id
PUT /scheduler/action/:id
starts/stops/pauses/resumes a scheduler
Example payload:
{
"action": "pause"
}
JSON Schema:
{
"type": "object",
"properties": {
"action": {
"id": "http://recurry/scheduler/action",
"type": "string",
"required": true,
"default": "pause",
"enum": [
"start",
"stop",
"pause",
"resume",
"trigger"
]
}
}
}
PUT /scheduler/rule/:id
sets the scheduler
Example payload:
{
"scheduler": "5 minutes"
}
JSON Schema:
{
"type": "object",
"properties": {
"scheduler": {
"id": "http://recurry/scheduler",
"type": "string",
"required": true,
"default": "5 minutes"
}
}
}
GET /scheduler
returns complete content of scheduled jobs
POST /scheduler
allows posting of a job scheduler
Example payload:
{
"method": "post",
"id": "call foo",
"url": "http://foo.com/ping",
"payload": {},
"scheduler": "5 minutes"
}
JSON Schema:
{
"type": "object",
"properties": {
"method": {
"id": "http://recurry/method",
"type": "string",
"required": true,
"enum": [
"get",
"post",
"put",
"delete",
"options"
],
"default": "post"
},
"id": {
"id": "http://recurry/id",
"type": "string",
"default": "call foo"
},
"url": {
"id": "http://recurry/url",
"type": "string",
"required": true,
"default": "http://foo.com/ping"
},
"payload": {
"id": "http://recurry/payload",
"type": "object"
},
"scheduler": {
"id": "http://recurry/scheduler",
"type": "string",
"default": "5 minutes"
}
}
}
GET /scheduler/:id
get a scheduler object including payload
GET /scheduler/reset/:id
resets the 'triggered' counter of a scheduled job
PUT /payload/:id
updates (optional) specific arguments which will be passed to the job
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
9 years ago
9 years ago
9 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago