я следующий код:питон urllib2 заклинивание 5 секунд после 6 ГЭТ, и застрял через 2 секунды после каждого POST
def whatever(url, data=None):
req = urllib2.Request(url)
res = urllib2.urlopen(req, data)
html = res.read()
res.close()
Я пытаюсь использовать его для GET, как это:
for i in range(1,20):
whatever(someurl)
затем, после того, как первые 6 раз ведут себя правильно, то он блокирует в течение 5 секунд, и по-прежнему работает нормально для отдыха получает:
2012-06-29 15:20:22,487: Clear [127.0.0.1:49967]:
2012-06-29 15:20:22,507: Clear [127.0.0.1:49967]:
2012-06-29 15:20:22,528: Clear [127.0.0.1:49967]:
2012-06-29 15:20:22,552: Clear [127.0.0.1:49967]:
2012-06-29 15:20:22,569: Clear [127.0.0.1:49967]:
2012-06-29 15:20:22,592: Clear [127.0.0.1:49967]:
**2012-06-29 15:20:26,486: Clear [127.0.0.1:49967]:**
2012-06-29 15:20:26,515: Clear [127.0.0.1:49967]:
2012-06-29 15:20:26,555: Clear [127.0.0.1:49967]:
2012-06-29 15:20:26,586: Clear [127.0.0.1:49967]:
2012-06-29 15:20:26,608: Clear [127.0.0.1:49967]:
2012-06-29 15:20:26,638: Clear [127.0.0.1:49967]:
2012-06-29 15:20:26,655: Clear [127.0.0.1:49967]:
2012-06-29 15:20:26,680: Clear [127.0.0.1:49967]:
2012-06-29 15:20:26,700: Clear [127.0.0.1:49967]:
2012-06-29 15:20:26,717: Clear [127.0.0.1:49967]:
2012-06-29 15:20:26,753: Clear [127.0.0.1:49967]:
2012-06-29 15:20:26,770: Clear [127.0.0.1:49967]:
2012-06-29 15:20:26,789: Clear [127.0.0.1:49967]:
2012-06-29 15:20:26,809: Clear [127.0.0.1:49967]:
2012-06-29 15:20:26,828: Clear [127.0.0.1:49967]:
При использовании-, то каждый запрос застревает 2 секунды. Я попробовал urllib2
и pycurl
, они оба дают одинаковый результат.
У кого-нибудь есть представление об этом поведении?
Это помогает, но не является основной причиной проблемы. Я нашел, что последняя причина заключалась в том, что pycurl не был потокобезопасным .. переключитесь на urllib2, и использование многопоточных решений решает мою проблему. – pinkdawn