class MyHandler(BaseHTTPServer.BaseHTTPRequestHandler):
def do_POST(self):
ctype, pdict = cgi.parse_header(self.headers.getheader('content-type'))
postvars = {}
try:
if ctype == 'application/x-www-form-urlencoded':
length = int(self.headers.getheader('content-length'))
postvars = cgi.parse_qs(self.rfile.read(length), keep_blank_values=1)
self.send_response(200)
self.send_header("Content-type", "text")
self.send_header("Content-length", str(len(body)))
self.end_headers()
self.wfile.write(body)
except:
print "Error"
def httpd(handler_class=MyHandler, server_address = ('2.3.4.5', 80)):
try:
print "Server started"
srvr = BaseHTTPServer.HTTPServer(server_address, handler_class)
srvr.serve_forever() # serve_forever
except KeyboardInterrupt:
server.socket.close()
if __name__ == "__main__":
httpd()
Ich habe den Großteil des Codes bereit. Ich muss Code zum Schließen der Verbindung hinzufügen, wenn der Client inaktiv ist oder nicht etwa 10 Sekunden lang antwortet (so etwas wie https://stackoverflow.com/a/265741/204623). Grundsätzlich möchte ich nicht, dass der Server den Aufruf von send_response(), wfile.write() usw. nicht blockiert. Wie kann ich das tun?Wie erstellt man einen einfachen HTTP POST Server?
Ich bin mir nicht sicher, warum Sie dies erstellen wollen, aber wenn es nicht viele Treffer erhalten wird, muss nichts anderes tun, als POST und/oder GET, und es macht Ihnen nichts aus, öffentlich zu sein, können Sie Google verwenden App Engine, die einfach einzurichten ist. – apple16