Я пытаюсь написать приложение, в котором отправляю исходное сообщение 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
сам - лучший способ пойти, разве это хорошая идея?
Любая помощь приветствуется, за одним исключением: пожалуйста, не говорите мне использовать какую-то другую библиотеку.