У нас есть скрипт Python, работающий по ночам в Windows, который время от времени опрашивает сервер, а затем переходит в режим сна на 30 минут, используя time.sleep()
.
Большинствовремя это работает нормально, но иногда мы получаем
00:49:48 Sleeping for 29.7765000025 minutes, for a total delay of 30 minutes
00:49:48 Traceback (most recent call last):
00:49:48 File "somescript.py", line 15, in <module>
00:49:48 print(somemodule.wait_for_execution_success(someguid, poll_time_in_minutes=5))
00:49:48 File "somemodule.py", line 82, in wait_for_execution_success
00:49:48 time.sleep(poll_time_in_minutes*60)
00:49:48 IOError: [Errno 4] Interrupted function call
Что может быть причиной этого?И что еще более важно, как мы можем избежать этого?
Я мог бы просто обернуть это с try:
except IOError: pass
, конечно, но как-то это похоже на обходной путь.
Единственное, что я могуможно было найти на межсетях, чтобы попытаться переключиться на win32api.Sleep()
с pywin32 модуля.(Я не могу найти никакой документации, но исходный код вместе с документацией Microsoft по базовой функции SleepEx предлагают мне просто позвонить win32api.Sleep(30*60*1000)
.) Но мне не нравитсяиметь дополнительную зависимость.И что еще более важно, это решит вышеуказанную проблему?
(Это с Python 2.7.14, если это имеет значение.)