2016-04-04 5 views
0

ich Python http.server bin mit zwei Instanzen in verschiedenen Häfen init und eine HTML-Datei aus einem Ordner dienen up ...Python http.server 2 Instanzen und 2 Ordner

import http.server 
import socketserver 
import os 

PORT1 = 8000 
PORT2 = 8001 

os.chdir("html/folder1/") 
Handler1 = http.server.SimpleHTTPRequestHandler 

os.chdir("../folder2/") 
Handler2 = http.server.SimpleHTTPRequestHandler 

httpd1 = socketserver.TCPServer(("", PORT1), Handler1) 
httpd2 = socketserver.TCPServer(("", PORT2), Handler2) 

print("serving at port", PORT1) 
print("serving at port", PORT2) 

httpd1.serve_forever() 
httpd2.serve_forever() 

Diese Lasten ohne Fehler, aber Ich kann nur laden http://localhost:8000

Irgendwelche Ideen, wo ich falsch liege?

Antwort

1

Die serve_forever Methode tut nur das ... dient http Anfragen, und nie beendet. Also wenn Sie das tun:

httpd1.serve_forever() 
httpd2.serve_forever() 

Die zweite Anweisung wird nie ausgeführt, weil die erste nie beendet wird. Möglicherweise können Sie dies tun, indem Sie jeden Aufruf an serve_forever in einem dedizierten Thread und dann nur auf das Abschließen aller Threads warten, aber möglicherweise gibt es eine bessere Lösung.

+0

Danke, das macht Sinn. Nur um sicherzustellen, dass das die beste Lösung ist – fightstarr20