Я бы лучше использовал следующие примеры кодов, чтобы объяснить мою проблему:
while True:
NewThread = threading.Thread(target = CheckSite, args = ("http://example.com", "http://demo.com"))
NewThread.start()
time.sleep(300)
def CheckSite(Url1, Url2):
try:
Response1 = urllib2.urlopen(Url1)
Response2 = urllib2.urlopen(Url2)
del Response1
del Response2
except Exception, reason:
print "How should I delete Response1 and Response2 when exception occurs?"
del Response1
del Response2 #### You can't simply write this as Reponse2 might not even exist if exception shows up running Response1
Я написал очень длинный скрипт, и он используется для проверки состояния сайтов на разных сайтах (время отклика или тому подобное).), так же, как и в предыдущих кодах, я использую несколько потоков, чтобы проверить разные сайты отдельно.Как вы можете видеть, в каждом потоке будет несколько запросов к серверу, и, конечно, вы будете время от времени получать 403 или подобное.Я всегда думаю, что эти потерянные соединения (с исключениями) будут собираться каким-то сборщиком мусора в python, поэтому я просто оставляю их в покое.
Но когда я проверял свой сетевой монитор, я обнаружил, что эти потерянные соединения все еще расходуют ресурсы.Чем дольше выполняется скрипт, тем больше теряется подключений.Я действительно не хочу делать предложение try-exc каждый раз, когда отправляю запрос на сервер, чтобы в каждой части except
можно было использовать del response
для уничтожения потерянного соединения.Должен быть лучший способ сделать это, кто-нибудь может мне помочь?