Почему я получаю тайм-аут, когда пытаюсь загрузить что-то из своего домена? - PullRequest
0 голосов
/ 03 апреля 2010
def download(source_url):
    socket.setdefaulttimeout(10)
    agents = ['Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)','Mozilla/4.0 (compatible; MSIE 7.0b; Windows NT 5.1)','Microsoft Internet Explorer/4.0b1 (Windows 95)','Opera/8.00 (Windows NT 5.1; U; en)']
    ree = urllib2.Request(source_url)
    ree.add_header('User-Agent',random.choice(agents))
    resp = urllib2.urlopen(ree)
    htmlSource = resp.read()
    return htmlSource


url = "http://myIP/details/?id=4"
result_html = download(url)

Время ожидания не должно быть ... даже с 10-секундным таймаутом.

Ответы [ 2 ]

1 голос
/ 03 апреля 2010

Это не удастся, если вы используете сервер разработки, так как он однопоточный и занят обработкой исходного запроса. Используйте mod_wsgi или ремешок на что-то вроде CherryPy , если хотите, чтобы оно работало.

0 голосов
/ 03 апреля 2010

Когда вы говорите «свой домен», вы бьете по нему внутри брандмауэра NAT?

Как то так?

123.1.2.3 (общедоступный myIP) <- шлюз NAT -> 192.168.1.5 (частный IP-адрес сервера) <-> 192.168.1.10 (вы)

Многие брандмауэры не позволяют внутреннему адресу обращаться к внешнему интерфейсу без перезаписи DNS. Перезапись DNS заставляет брандмауэр перехватывать ваш поиск DNS и перезаписывать полученный общедоступный IP-адрес на частный IP-адрес.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...