diff options
author | Lars Wirzenius <liw@liw.fi> | 2013-04-11 20:47:37 +0100 |
---|---|---|
committer | Lars Wirzenius <liw@liw.fi> | 2013-04-11 20:47:37 +0100 |
commit | bcdbf46c8ec8f3daf60550c059693595cc4cff79 (patch) | |
tree | ea7d8623c12be6eb5a49e5fdeb11a69ba2414790 | |
parent | dccfdbe5bf7233cc369a4a4994e473f0869a5f15 (diff) | |
download | desktop-cronish-bcdbf46c8ec8f3daf60550c059693595cc4cff79.tar.gz |
Add timeout feature
-rwxr-xr-x | desktop-cronish | 9 | ||||
-rwxr-xr-x | tests/timeout.script | 13 | ||||
-rw-r--r-- | tests/timeout.stderr | 1 |
3 files changed, 22 insertions, 1 deletions
diff --git a/desktop-cronish b/desktop-cronish index f69d16e..738d29c 100755 --- a/desktop-cronish +++ b/desktop-cronish @@ -17,6 +17,7 @@ import cliapp import time +import sys import yaml @@ -68,9 +69,15 @@ class DesktopCronish(cliapp.Application): def execute_job(self, job_name): job = self.jobs[job_name] - exit, out, err = cliapp.runcmd_unchecked(['sh', '-c', job['command']]) + argv = ['sh', '-c', job['command']] + if 'timeout' in job: + argv = ['timeout', str(job['timeout'])] + argv + exit, out, err = cliapp.runcmd_unchecked(argv) self.output.write(out) if exit != 0: + sys.stderr.write( + 'ERROR: Job %s: Command failed: %s\n' % + (job_name, ' '.join(argv))) sys.stderr.write(err) self.previously[job_name] = self.now() diff --git a/tests/timeout.script b/tests/timeout.script new file mode 100755 index 0000000..0533880 --- /dev/null +++ b/tests/timeout.script @@ -0,0 +1,13 @@ +#!/bin/sh + +set -eu + +cat <<EOF > "$DATADIR/foo.tasks" +date: + interval: 2 + timeout: 1 + command: sleep 1000 +EOF + + +./desktop-cronish --max-jobs=1 "$DATADIR/foo.tasks" diff --git a/tests/timeout.stderr b/tests/timeout.stderr new file mode 100644 index 0000000..a6741f6 --- /dev/null +++ b/tests/timeout.stderr @@ -0,0 +1 @@ +ERROR: Job date: Command failed: timeout 1 sh -c sleep 1000 |