/ / Чому time.sleep зупиняє виконання взагалі? - пітон, пітон-2.7

Чому час.сліп зупиняє виконання взагалі? - python, python-2.7

Наступна функція призначена для запускуциклу протягом 20 хвилин, обробляючи SQL-завдання, якщо вони доступні. Щоб уникнути надто великих викликів SQL, коли нема чого обробляти, він призначений для сну протягом 5 секунд, перш ніж спробувати обробити завдання знову:

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))

Що я роблю неправильно?

Відповіді:

4 для відповіді № 1

time.sleep не приймає аргумент ключового слова seconds:

time.sleep(5)

Я не знаю, чому це не викликає помилку про відсутність необхідного аргументу.

https://docs.python.org/2/library/time.html#time.sleep

>>> time.sleep(seconds=1)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: sleep() takes no keyword arguments
>>> time.sleep(1)
>>> "everything is fine"