Si lee la fuente, verá que solo el puerto se puede anular en la línea de comando. Si desea cambiar el host en el que se sirve, deberá implementar el test()
método de SimpleHTTPServer
y BaseHTTPServer
usted mismo. Pero eso debería ser realmente fácil.
Así es como puede hacerlo, con bastante facilidad:
import sys
from SimpleHTTPServer import SimpleHTTPRequestHandler
import BaseHTTPServer
def test(HandlerClass=SimpleHTTPRequestHandler,
ServerClass=BaseHTTPServer.HTTPServer):
protocol = "HTTP/1.0"
host = ''
port = 8000
if len(sys.argv) > 1:
arg = sys.argv[1]
if ':' in arg:
host, port = arg.split(':')
port = int(port)
else:
try:
port = int(sys.argv[1])
except:
host = sys.argv[1]
server_address = (host, port)
HandlerClass.protocol_version = protocol
httpd = ServerClass(server_address, HandlerClass)
sa = httpd.socket.getsockname()
print "Serving HTTP on", sa[0], "port", sa[1], "..."
httpd.serve_forever()
if __name__ == "__main__":
test()
Y para usarlo:
> python server.py 127.0.0.1
Serving HTTP on 127.0.0.1 port 8000 ...
> python server.py 127.0.0.1:9000
Serving HTTP on 127.0.0.1 port 9000 ...
> python server.py 8080
Serving HTTP on 0.0.0.0 port 8080 ...
http.server
permite la vinculación de inmediato, por ejemplo,python3 -m http.server --bind 127.0.0.1 8000
sería suficienteSimpleHTTPServer
es un solo subproceso y bloqueo, lo que significa que no podrá realizar otra solicitud hasta que finalice la solicitud anterior. Y no tiene soporte de rango, por ejemplo, para transmitir / buscar un archivo multimedia desde una posición específica. Una mejor alternativa estwisted
(pip install twisted
) con la que puede ejecutartwistd -n web --path /
. También puede hacer FTP anónimo contwistd -n ftp -p 2121 -r /
. Más frases breves del servidor http: gist.github.com/willurd/5720255 .