сервер python SimpleHTTPRequestHandler после выхода оставляет сокет в состоянии TIME_WAIT

У меня написан простой сервер, который расширяет SimpleHTTPRequestHandler

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

При запуске netstat выглядит так:

sam@hersheezy:server$ sudo netstat -na --program | grep 8001
tcp        0      0 0.0.0.0:8001            0.0.0.0:*               LISTEN      23392/python

После запроса netstat выглядит так (даже после завершения запроса):

sam@hersheezy:server$ sudo netstat -na --program | grep 8001
tcp        0      0 0.0.0.0:8001            0.0.0.0:*               LISTEN      23392/python    
tcp        0      0 127.0.0.1:8001          127.0.0.1:48659         TIME_WAIT   -

Затем я убиваю сервер с помощью Cc и netstat выглядит так (на данный момент я не могу перезапустить сервер, т.к. порт уже занят):

 sudo netstat -na --program | grep 8001
tcp        0      0 127.0.0.1:8001          127.0.0.1:48674         TIME_WAIT   - 

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

"""
reply is an object that can be json encoded that is written with a response code 200
"""
def send_provider_reply(self, replyobj):
    try:
        str_reply = json.dumps(replyobj)
        self.send_response(200)
        self.send_header('Content-type', 'application/json')
        self.end_headers()
        #do we need to send a newline??
        self.wfile.write(str_reply)
    except:
        traceback.print_exc()
        self.send_err(500, 'failed after provider creation')

5
задан Jörg Beyer 5 March 2012 в 21:31
поделиться