Ich versuche, ein BaseHTTPServer-Programm zu machen. Ich bevorzuge Python 3.3 oder 3.2 dafür. Ich finde den doc schwer zu verstehen, über was zu importieren, sondern versuchte, aus dem Import zu ändern:Python 3.x BaseHTTPServer oder http.server
from BaseHTTPServer import BaseHTTPRequestHandler,HTTPServer
zu:
from http.server import BaseHTTPRequestHandler,HTTPServer
und dann der Import funktioniert und das Programm starten und warten auf eine GET-Anfrage. ABER, wenn die Anforderung eine Ausnahme ankommt, wird angehoben:
File "C:\Python33\lib\socket.py", line 317, in write return self._sock.send(b)
TypeError: 'str' does not support the buffer interface
Frage: Gibt es eine Version von BaseHTTPServer oder http.server, die mit Python3.x aus der Box arbeitet oder bin ich etwas falsch?
Das ist "mein" Programm, das ich in Python versuchen laufen 3.3 und 3.2:
#!/usr/bin/python
# from BaseHTTPServer import BaseHTTPRequestHandler,HTTPServer
from http.server import BaseHTTPRequestHandler,HTTPServer
PORT_NUMBER = 8080
# This class will handle any incoming request from
# a browser
class myHandler(BaseHTTPRequestHandler):
# Handler for the GET requests
def do_GET(self):
print ('Get request received')
self.send_response(200)
self.send_header('Content-type','text/html')
self.end_headers()
# Send the html message
self.wfile.write("Hello World !")
return
try:
# Create a web server and define the handler to manage the
# incoming request
server = HTTPServer(('', PORT_NUMBER), myHandler)
print ('Started httpserver on port ' , PORT_NUMBER)
# Wait forever for incoming http requests
server.serve_forever()
except KeyboardInterrupt:
print ('^C received, shutting down the web server')
server.socket.close()
dem Programm arbeiten zum Teil in python2.7 sondern gibt diese Ausnahme nach 2-8 Anfragen:
error: [Errno 10054] An existing connection was forcibly closed by the remote host
Leider die Norm auf dem Python 3 docs nicht Änderungen von Python zu beachten ist, 2. Ich denke, dass dies ein großer Fehler war. –