以下函数旨在运行循环20分钟,处理SQL任务(如果可用)。为了避免过多的SQL调用时,有没有要处理的,它的目的是睡眠5秒钟试图处理再次执行任务之前:为什么time.sleep完全停止执行?
def main():
sql = 'some sql task here;'
stop_time = datetime.today() + timedelta(minutes = 20)
print('Started at ', datetime.now())
print('Should stop at', stop_time)
load_more_rows = True
with ConnectionParameters.get_conn() as conn:
while load_more_rows or (datetime.now() < stop_time):
try:
res = get_num_processed_batches(conn, sql)
processed_batch = res > 0
except Exception as ex:
log_error(repr(ex))
processed_batch = False
if not processed_batch:
print('Sleeping at ', datetime.now())
time.sleep(seconds=5)
load_more_rows = processed_batch
print('Finished iteration at ', datetime.now())
print('Stopped at ', datetime.now())
不幸的是,不是睡觉,醒来,并继续处理任务直到时间到,它只是完全停止执行,如输出所示:
('Started at ', datetime.datetime(2015, 3, 31, 17, 31, 6, 206652))
('Should stop at', datetime.datetime(2015, 3, 31, 17, 51, 6, 206630))
('Finished iteration at ', datetime.datetime(2015, 3, 31, 17, 31, 6, 356698))
('Finished iteration at ', datetime.datetime(2015, 3, 31, 17, 31, 6, 614349))
('Finished iteration at ', datetime.datetime(2015, 3, 31, 17, 31, 6, 638210))
('Finished iteration at ', datetime.datetime(2015, 3, 31, 17, 31, 6, 765645))
('Finished iteration at ', datetime.datetime(2015, 3, 31, 17, 31, 6, 885282))
('Finished iteration at ', datetime.datetime(2015, 3, 31, 17, 31, 7, 12109))
('Sleeping at ', datetime.datetime(2015, 3, 31, 17, 31, 7, 13803))
我在做什么错了?
是你包括你所使用的代码? 'time.sleep()'不带关键字参数。 – 2015-03-31 21:46:01