Your skill will accomplish what the force of many cannot |
|
PerlMonks |
Re^2: singleton lock not reliableby cavac (Parson) |
on Jun 25, 2021 at 12:20 UTC ( [id://11134272]=note: print w/replies, xml ) | Need Help?? |
crontab? File locks? docker??? Writing a simple cyclic thingy isn't that hard. Let's say you have a program that calculates the meaning of life, the universe and everything. It takes a varying time to execute. You want to call it every ten seconds or so, except when it takes longer to run. First, we need the program:
Then we write a cyclic executive that keeps track of the run time of the external program (=the scheduler):
This effectively implements a simple "minimum cycle time" scheduler:
If you want a more crontab like behaviour with start times aligned to specific times, you can use take the current time, calculate the modulos (division remainder) for the cycle time. Then calculate difference between that and a full cycle time interval how long to sleep. Like this:
Result:
This has a jitter of up to one second, but that should be acceptable enough, i think. Depending on your required time zone settings, you also might have to tweak the whole thing by about 37 seconds, plus/minus a couple of leap seconds every few years, something like this:
But that's probably overkill for most purposes.
perl -e 'use Crypt::Digest::SHA256 qw[sha256_hex]; print substr(sha256_hex("the Answer To Life, The Universe And Everything"), 6, 2), "\n";'
In Section
Seekers of Perl Wisdom
|
|