Я запускаю Python скрипт, который иногда зависает. Он будет работать часами, а потом просто застрянет. Когда он застрял, я не могу прервать его в командной строке windows с помощью Ctrl + c или чего-либо подобного.
Вот соответствующий код:
while True:
# do stuff
link = getLink() # code to get link not relevant, returns "direct_link_to_image_on_web.jpg"
raw_img = requests.get(link,stream=True)
with open(IMG_DIR, 'wb') as out_file:
shutil.copyfileobj(raw_img.raw, out_file)
# do other stuff
time.sleep(90)
После использования распечаток Я обнаружил, что после ~ 24 часов загрузки изображения каждые 1,5 минуты оно застревает на линии с shutil.copyfileobj
. Это никогда не проходит через эту строку, скрипт просто зависает.
Я посмотрел на изображение в out_file
, на которое этот код пытался записать новое изображение, пока скрипт еще висел. Вот оно:
Скриншот того, как это выглядит, открывая его локально:
Я попытаюсь добавить команду try / catch и посмотреть, напечатает ли она что-нибудь полезное в следующий раз, когда зависнет.
Кто-нибудь знает, что может привести к зависанию скрипта? Должен ли я загружать / записывать изображение другим способом? Я использую Python 3.6.3. Любая помощь будет оценена.