37,720
社区成员
发帖
与我相关
我的任务
分享
from BaseHTTPServer import HTTPServer, BaseHTTPRequestHandler
class ACSServer(HTTPServer):
...
def start_ACS_server(ip_server, port_server, script, time_active):
server = ACSServer((ip_server, port_server), ACSRequestHandler)
tp = Thread(target = server.serve_forever)
tp.start()
time.sleep(time_active)
server.shutdown()
class ACSRequestHandler(BaseHTTPRequestHandler):
def do_POST(self):
self._send_204()
# Waiting 0.1s is important,
# or self.request.shutdown(socket.SHUT_WR) will not work
time.sleep(0.1)
# when close_connection is 0, handle next request
# if not, will not handle next request in the same stream
self.close_connection = 1
def _send_204(self):
self.send_response(204, "No Content")
# self.send_header("Server", "Apache-Coyote/1.1")
'''
Content-type is usually bind with Content-Length,
missing Content-Length will make socket can not close normally
'''
# self.send_header("Content-type", "text/xml")
self.end_headers()
try:
print self.request.getpeername()
print self.request.getsockname()
self.request.shutdown(socket.SHUT_RDWR)
except socket.error:
print "socket.error"
pass
self.request.close()
print("finish")
class ACSRequestHandler(BaseHTTPRequestHandler):
def do_POST(self):
...
代码中并没有直接对socket进行编程,其他的规则都是沿用原来的库:
from BaseHTTPServer import HTTPServer, BaseHTTPRequestHandler