cron 表達式由一組鍵值對 field = expr 確定
field是時間類型如年月日
expr是時間表達式如*/2, 1-5或者1-3/2
例
hour='1-5/2',一點到五點,每隔兩小時
Field類關(guān)鍵方法
def compile_expression(self, expr):
# 將表達式轉(zhuǎn)化成AllExpression/RangeExpression 對象
for compiler in self.COMPILERS:
match = compiler.value_re.match(expr)
if match:
compiled_expr = compiler(**match.groupdict()) # expr -> obj of Compiler
try:
compiled_expr.validate_range(self.name) # validate
except ValueError as e:
exc = ValueError('Error validating expression {!r}: {}'.format(expr, e))
six.raise_from(exc, None)
self.expressions.append(compiled_expr)
return
raise ValueError('Unrecognized expression "%s" for field "%s"' % (expr, self.name))
def get_value(self, dateval):
return getattr(dateval, self.name)
def get_next_value(self, dateval):
# call expr.get_next_value
smallest = None
for expr in self.expressions:
value = expr.get_next_value(dateval, self)
if smallest is None or (value is not None and value < smallest):
smallest = value
return smallest