以下是我的服務端代碼,在運行一段時間后8090埠就不同了,但從在Windows中查看這個埠還是被占用沒有釋放掉,更換了好幾臺服務器都有這個問題。
from http.server import HTTPServer, BaseHTTPRequestHandler
import json
import configparser
import socket
class Resquest(BaseHTTPRequestHandler):
def handler(self):
print("data:", self.rfile.readline().decode())
self.wfile.write(self.rfile.readline())
def do_GET(self):
print(self.requestline)
if self.path != '/hello':
self.send_error(404, "Page not Found!")
return
data = {
'result_code': '1',
'result_desc': 'Success',
'timestamp': '',
'data': {'message_id': '25d55ad283aa400af464c76d713c07ad'}
}
self.send_response(200)
self.send_header('Content-type', 'application/json')
self.end_headers()
self.wfile.write(json.dumps(data).encode())
def do_POST(self):
CIP = self.client_address[0]
print('ClientIP=' + CIP)
req_datas = self.rfile.read(int(self.headers['content-length']))
CH = req_datas.decode()
self.send_response(200)
self.send_header('Content-type', 'application/json')
self.end_headers()
try:
self.wfile.write( CH.encode('utf-8'))
except Exception as e:
SErr = str(e)
print('【' + CIP + '】 ' + 'Error: ' + SErr)
if __name__ == '__main__':
httpserverport = 8090
host = ('', int(httpserverport))
server = HTTPServer(host, Resquest)
print("Starting server, listen at: %s:%s" % host)
hostname = socket.gethostname()
print('計算機名:'+ hostname)
ip = socket.gethostbyname(hostname)
print('計算機IP:'+ip)
server.serve_forever()
uj5u.com熱心網友回復:
殺行程啊啟動的時候讀取并保存pid,列印或保存到檔案,
pid = os.getpid() # 獲取行程的pid
windows下 使用 taskkill /pid 22222(python中讀取的pid值)
uj5u.com熱心網友回復:
不是其他的行程占用這個埠,是我自己的程式一直用著,是程式啟動后埠連接正常,運行一段時間后埠就連不上了,Telnet也不通uj5u.com熱心網友回復:
有人碰到過這種情況嗎?我用的的Python3.8uj5u.com熱心網友回復:
1 HTTPServer 并發支持很差,使用ThreadingHTTPServer 代替 HTTPServer
2 req_datas = self.rfile.read(int(self.headers['content-length']))
沒有處理長度不符的情況,如果length不對,可能產生阻塞
3 class Resquest(BaseHTTPRequestHandler): 非不好的命名,拼寫錯誤,而且應該以Handler結束
uj5u.com熱心網友回復:
https://www.zybuluo.com/JunQiu/note/1350528uj5u.com熱心網友回復:
何必自己寫httpserver呢,是flask不好用還是Django太復雜呢?轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/40145.html
下一篇:Vue學習—深入剖析JSX
