jobd
jobd is a simple job queue daemon written in Node.JS. It uses MySQL table as a storage.
Installation
To be written
Usage
To be written
MySQL setup
Minimal table scheme.
In a real world, you would to add need additional fields such as job_name
or
job_data
.
CREATE TABLE `jobs` (
`id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
`target` char(16) NOT NULL,
`slot` char(16) DEFAULT NULL,
`time_created` int(10) UNSIGNED NOT NULL,
`time_started` int(10) UNSIGNED NOT NULL DEFAULT 0,
`time_finished` int(10) UNSIGNED NOT NULL DEFAULT 0,
`status` enum('waiting','manual','accepted','running','done','ignored') NOT NULL DEFAULT 'waiting',
`result` enum('ok','fail') DEFAULT NULL,
`return_code` tinyint(3) UNSIGNED DEFAULT NULL,
`sig` char(10) DEFAULT NULL,
`stdout` mediumtext DEFAULT NULL,
`stderr` mediumtext DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `status_target_idx` (`status`, `target`, `id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
For optimization purposes, you can turn fields target
and slot
into ENUM
s.
jobd requests
-
poll(targets=[])
— get new tasks for specifiedtargets
from database. Iftargets
is empty or not specified, get tasks for all serving targets. -
status
— returns status of internal queues and memory usage. -
run-manual(id)
— enqueue and run job with specifiedid
andstatus
set tomanual
and return results.
jobd-master requests
-
register-worker(targets)
— used by a jobd instance to register itself with master. You don't need it. -
poke(targets)
— sendpoll
requests to all registered workers that serve specifiedtargets
. -
status
— returns list of registered workers and memory usage.
TODO
jobd:
pause(targets)
/continue(targets)
run-manual
with multiple jobs
jobd-master:
status(workers=true)
pause(targets)
/continue(targets)
other:
- text protocol
- graceful shutdown
- remove password from logger dumps
- reload config at runtime
- jobctl
License
BSD-2c