ok, explanation is clearer. Although scheduler was not meant to be 
executing task on a precise-timing (its a queue processor, not cron), but 
instead it executes the tasks that are available, all that is needed is for 
you to understand how it works.

It's not as precise as cron, because scheduler polls every x seconds the 
scheduler_task table to see if there is anything to do, and then spawns a 
process to execute the task.
If you need your mails to start exactly at 12:00:00 and at 14:00:00, I'm 
assuming you understood how to make it work in the wrong way.

Scheduling a start_time of 12:00:00 and a stop_time of 14:00:00 assures you 
that no tasks will be picked before 12:00:00 and later than 14:00:00. If 
you need that task to fire two times only, then setting a period of 4 hours 
will never get you 2 executions, because if the first task is picked around 
12:00:00 it will be "rescheduled" for execution 4 hours later, at 16:00:00. 
The point is, you set the task to never execute past 14:00:00, so the 
second execution will never take place at 16:00:00.

Be careful though: the scheduler can "spend" some seconds of "sleep" before 
picking the tasks, so calculating those times so precisely can get you in 
the situation where you set 12:00:00 as start_time, 14:00:00 at stop_time 
and 7200 as period, but never get to the second execution.

That's because scheduler uses the time the task was picked up (that may 
very well be 12:00:05) to calculate the next time a task will be 
effectively be able to be picked up, and in that case, it will be 14:00:05.

If so, you have a few choices (based on your loads - meaning how many 
concurrent task you may have at 12:00:00), the simplest of them all (given 
your current mindset) is to set stop_time at 14:01:00 instead of 14:00:00, 
assuming you can "forgive" that one minute ahead.

But, if I understood your requirements, why don't you just use repeats=2, 
start_time=12:00:00, period=7200 and no stop_time at all ?
This will guarantee that the first execution will take place after 12:00:00 
(again, assuming a normal load, it could be picked up a few seconds later, 
e.g. 12:00:15) and the second one at , e.g., 14:00:15 , and then the task 
will result as COMPLETED after exactly 2 executions.


-- 

--- 
You received this message because you are subscribed to the Google Groups 
"web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to