periodically schedule — regina 1 documentation

# periodically schedule

## Interval

when use `interval` in `tb.restart` or `tb.start` like this `tb.restart(interval=10)`

it will run tasks periodically with given interval, the unit of interval is `seconds` .

if it is omitted, the typology will run only once no matter what `start_time` is.

## Start time

start_time option controls when to start typology for the first time.

start_time is a time string with format ‘%Y-%m-%d %H:%M:%S’ (2016-12-03 23:18:19)

when start_time used in `tb.restart` or `tb.start` like this `tb.restart(start_time="2016-12-03 20:18:03")`

it means the tpyololgy will start to run at “2016-12-03 20:18:03”.

## Default value of start_time

actually, every typoloy has a start_time, if start_time is omitted, the default value is used.

condition one

if interval is given and start_time is ommited, the default value is `math.ceil(time.time() / interval) * interval`,

for example:

presume the time we start typology is `2016-12-03 20:18:03`.

if interval is 10, the start_time would be `2016-12-03 20:18:10`

if interval is 5, the start_time would be `2016-12-03 20:18:05`

if interval is 60, the start_time would be `2016-12-03 20:19:00`

condition two

if start_time and interval both are omitted,

the start_tiem will be `now` and run only once

conditon three

if interval is given and start_time is less than `math.ceil(time.time() / interval) - 1) * interval`, it will be this value, this prevent re-run old task when typology restart.

for example:

presume the time we start typology is `2016-12-03 20:18:03`.

if start_time is ‘2016-11:11 12:30:21’ and interval is 10,

the start_time would be `2016-12-03 20:18:00`, this will run immediately and the second run will be at `2016-12-03 20:18:10`

if interval is not given, start_time will be its value and just run only once.