Wie können Sie asynchroner BasehttprequestHandler Python Server funktionieren?
Posted: 13 May 2025, 18:27
Das habe ich. Es heißt Oserror: [Errno 98] Adresse bereits verwendet: < /p>
Code: Select all
import threading
import _thread
def GET(self):
print(self.path)
path = self.path[1:]
print(f"path [{path}]")
message = "";
self.send_response(200)
self.send_header('Content-type','text/html')
self.end_headers()
f = open(path)
message = f.read()
self.wfile.write(bytes(message, "utf8"))
def SERVE():
with HTTPServer(('0.0.0.0', 8000), handler) as server:
server.serve_forever()
class handler(BaseHTTPRequestHandler):
def do_GET(self):
t1 = threading.Thread(target=GET,args=(self))
t2 = threading.Thread(target=SERVE)
t1.start()
t2.start()
import socketserver
import socket
with HTTPServer(('0.0.0.0', 8000), handler) as server:
server.serve_forever()
< /code>
Ich versuche, es im Parallelcode mit Threads auszuführen, da sie einfacher zu verwenden als die Multiprozessierung. Sie sagen immer, dass sie dies tun, aber ich weiß nicht, wie ich diese Einstellung in meinem Code auf den Socket festlegen kann (oder hinter dem BasehttprequestHandler a.k.a -Server. Arbeiten. if self.allow_reuse_address and hasattr(socket, "SO_REUSEADDR"):
self.socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
if self.allow_reuse_port and hasattr(socket, "SO_REUSEPORT"):
self.socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEPORT, 1)
self.socket.bind(self.server_address)
self.server_address = self.socket.getsockname()