On 17/07/2015 09:26, Rafal Bisingier wrote:
> So I run them as a service with "sleep BIG" in
> finish script (it's usually unimportant if this runs on same hours
> every day). I can have this sleep in the main process itself, but it
> isn't really it's job
I also use a supervision infrastructure as a cron-like tool. In those
cases, I put everything in the run script:
if { periodic-task } sleep $BIG
periodic-task's run time is usually more or less negligible compared
to $BIG, and I'm not expecting to be controlling it with signals anyway
- but I like to being able to kill the sleep if I want to run
periodic-task again earlier for some reason. So I don't mind executing
a short-lived (even if it takes an hour or so) process in a child, and
then having the run script exec into the sleep. And since
periodic-task exits before the sleep, it doesn't block resources
needlessly.
Whereas if your sleep is running in the finish script, you have no
way to control it. You stay in a limbo state for $BIG and your service
is basically unresponsive that whole time; it's reported as down (or
"finish" with runit) but it's still the normal, running state. I find
this ugly.
What do you think ? Is putting your periodic-task in a child an
envisionable solution for you, or do you absolutely need to exec into
the interpreters ?
--
Laurent
Received on Fri Jul 17 2015 - 09:06:46 UTC