У меня написан простой сервер, который расширяет 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')