Пиша скрипт на Python, който проверява/наблюдава състоянието на няколко сървъра/уебсайта (време за реакция и подобни неща), това е GUI програма и използвам отделна нишка, за да проверя различен сървър/уебсайт и основната структура на всяка нишка използва безкраен докато цикъл, за да поиска този сайт на всеки случаен период от време (15 до 30 секунди), след като има промени в уебсайта/сървъра, всяка нишка ще започне нова нишка, за да направи задълбочена проверка (заявка за повече страници и подобни неща).
Проблемът е, че моята интернет връзка винаги се блокира/засяда/обърква след няколко часа изпълнение на този скрипт, ситуацията е, че от страна на моя скрипт получавам urlopen error time out всеки път, когато иска страница, и от страна на моя браузър FireFox Не мога да отворя нито един сайт. Но странното е, че в момента, в който затворих скрипта си, интернет връзката ми се възстанови незабавно, което означава, че сега мога да сърфирам във всеки сайт през браузъра си, така че трябва да е скриптът, който причинява целия проблем.
Проверих внимателно програмата и дори използвам del
за изтриване на всяка връзка, след като бъде използвана, все още получавам същия проблем. Използвам само urllib2, urllib, mechanize за извършване на мрежови заявки.
Някой знае ли защо се случва такова нещо? Как да отстраня грешки в този проблем? Има ли инструмент или нещо, което да проверя състоянието на мрежата ми, след като възникне такава ситуация? Наистина ме мъчи известно време...
Между другото аз съм зад VPN, има ли нещо общо с този проблем? Въпреки че не мисля така, защото моята мрежа винаги се връща, след като скриптът се затвори, и VPN връзката никога не прекъсва (както изглежда) по време на целия процес.
[Актуализации:]
Току-що намерих повече информация за този проблем, когато моята програма прекъсне връзката с интернет, добре, не е напълно „намалена“, искам да кажа, че не мога да отворя нито един сайт в браузъра си или винаги получавам urlopen error timed out, но все пак мога да получа отговорете с помощта на "ping google.com" в cmd ред. И когато ръчно прекъснах VPN връзката, след това набирам отново, без да затварям програмата си, тя започва да работи отново и също мога да сърфирам в мрежата през браузъра си. Защо това се случва?
response = urllib2.urlopen("http://google.com")
, би лиdel response
затворил тази връзка? - person Shane   schedule 14.01.2011del response
просто премахва локалната променливаresponse
, като по този начин премахва една препратка към обекта urllib. Ако това е единствената препратка към обекта на отговора, той ще бъде изтрит и, да, затворен. Но това не трябва да се прави ръчно сdel
, вместо това трябва да го оставите да излезе извън обхвата. Ако не сте сигурни, можете ръчно да извикатеclose()
на обекти, но това не трябва да е необходимо. Но това не звучи като проблем с вашето приложение. - person Rosh Oxymoron   schedule 14.01.2011urlopen error timed out
всеки път. Това наистина ме ядоса - person Shane   schedule 14.01.2011del
е почти безполезен, тъй като нямате контрол върху това кога или дори дали връзката се затваря. - person Lennart Regebro   schedule 14.01.2011