Python HTTPSConnection.close () не появляется, чтобы закрыть соединение? - PullRequest
1 голос
/ 02 апреля 2010

Я не уверен, что это ошибка или я просто делаю что-то не так. Если бы я сделал HTTP-соединение, как это:

import httplib

http_connection = httplib.HTTPConnection("192.168.192.196")
http_connection.request("GET", "/")
http_connection.sock.settimeout(20)
response = http_connection.getresponse()
data = response.read()
http_connection.close()

Затем в командной строке DOS я делаю это:

netstat -ano | find /i "192.168.192.196:80" | find /i "ESTABLISHED"

Я ничего не получаю.

Однако, если я делаю то же самое, но меняю его на HTTPSConnection:

import httplib

http_connection = httplib.HTTPSConnection("192.168.192.196")
http_connection.request("GET", "/")
http_connection.sock.settimeout(20)
response = http_connection.getresponse()
data = response.read()
http_connection.close()

Тогда сделайте это:

netstat -ano | find /i "192.168.192.196:443" | find /i "ESTABLISHED"

На самом деле я увижу, что соединение остается установленным до тех пор, пока я фактически не выйду из оболочки Python ^ ^.

Это происходит в одном из приложений, за которые я отвечаю. Python на самом деле не висит там - он просто оставляет соединение открытым.

Я что-то здесь не так делаю? Нужен ли мне дополнительный код для закрытия HTTPS-соединения?

Это Python 2.6.4, кстати.

1 Ответ

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

Оказывается, что если вы отправляете HTTP-заголовок «Connection: close», это не проблема - хотя я все еще думаю, что .close () должен фактически закрыть соединение, как это происходит для HTTPConnection.

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