1. 定时任务
import schedule, functools, time
def run_task(task, freq=1, time_unit='minute'):
'''定时执行任务'''
if time_unit == 'second':
schedule.every(freq).seconds.do(task)
elif time_unit == 'minute':
schedule.every(freq).minutes.do(task)
elif time_unit == 'hour':
schedule.every(freq).hour.do(task)
elif time_unit == 'day':
schedule.every(freq).day.at("4:30").do(task)
while True:
schedule.run_pending()
time.sleep(1)
2. 定时任务装饰器
def run_every(freq=1, time_unit='minute'):
'''定时任务装饰器'''
def decorator(func):
@functools.wraps(func)
def wrapper(*args, **kw):
try:
run_task(func, freq, time_unit)
except:
pass
return wrapper
return decorator
3. 运行测试
需要调用一次被装饰函数来触发定时任务