有业务线提出需求:要求对于其流量,只能在0点到7点扫描。
对此,celery发送任务到队列时可以指定执行的时间。
当worker收到任务后,判断还未到执行时间,会存储在worker中,在到达时候后再执行。
如果还未执行就中断worker,则任务会重新打回celery队列中,不担心丢失。
所以只需要传入time格式的具体执行时间就行。
Demo
import datetime
def in_run_time(start, end):
"""
用来给任务判断,在不在可执行的时间里,是不是需要丢到定时里
Args:
start: 任务开始执行的时间,格式如 "00:00:00"
end: 任务停止执行的时间,格式如 "07:00:00"
Returns:
"""
current_date = str(datetime.datetime.now().date()) + " "
start_time = datetime.datetime.strptime(current_date + start, '%Y-%m-%d %H:%M:%S')
end_time = datetime.datetime.strptime(current_date + end, '%Y-%m-%d %H:%M:%S')
current_date = datetime.datetime.now()
i