Постоянные HTTP-соединения с httplib - PullRequest
1 голос
/ 04 ноября 2011

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

Часть, с которой у меня проблемы - это Actua

В основном я делаю это:

h=http.HTTPConnection(sever, port, timeout)
h.putrequest('POST', selector)
h.putheaders(...)
h.endheaders()
h.send(body)
buffering = False
while 1:
  r = h.getresponse(buffering)
  f=open(unique_filename, 'w')
  f.write(r.read())
  f.close()

Я ожидаю, что приложение должно блокироваться в цикле, а когда данные поступают, они записываются в файл. Я подозреваю, что неправильно использую read, но просмотр источника httplib не помог.

Также на сайте документации по Python упоминается httplib.fileno(), который возвращает сокет, используемый httplib. Я использую 2.7.0 и документация по сайту предназначена для 2.7.2, я не могу найти метод fileno(). Я подозреваю, что взятие сокета через httplib и вызов recv сам - лучший способ пойти, разве это хорошая идея?

Любая помощь приветствуется, за одним исключением: пожалуйста, не говорите мне использовать какую-то другую библиотеку.

...