Python urllib2.urlopen () зависает при локальном подключении к серверу Java Restlet - PullRequest
8 голосов
/ 30 ноября 2011

Я пытаюсь подключиться к локальному работающему серверу Restlet из python, но соединение зависает бесконечно (или время ожидания истекло, если я установил таймаут).

import urllib2
handle = urllib2.urlopen("http://localhost:8182/contact/123") # hangs

Если я использую curl из оболочки для открытия вышеуказанного URL, результаты быстро возвращаются. Если я использую urllib2 для открытия другой локальной службы (например, веб-сервер Django на порту 8000), urllib2 работает нормально.

Я пытался отключить брандмауэр (я делаю это на OS X). Я попытался изменить localhost на 127.0.0.1. Журналы Restlet для соединения curl и urllib2 выглядят так же, как и пользовательский агент.

Мой обходной путь - просто позвонить curl через subprocess, но я бы лучше понял, почему это не получается.

Вот как выглядит мой ресурс Restlet:

public class ContactResource extends ServerResource {

  @Get
  public String represent() throws Exception {
    return "<contact details>";
  }
  //....
}

Дайте мне знать, если вам нужна дополнительная информация / код

Ответы [ 2 ]

3 голосов
/ 09 мая 2012

Я столкнулся с похожими проблемами и в итоге использовал пакет Requests .

0 голосов
/ 06 декабря 2011

в urllib2 есть ProxyHandler (http://docs.python.org/library/urllib2.html#urllib2.ProxyHandler) в urllib2

, попробуйте передать ему пустой словарь до urlopen

urllib2.ProxyHandler([])
handle = urllib2.urlopen("http://localhost:8182/contact/123")
...