Si vous lisez la source, vous verrez que seul le port peut être remplacé sur la ligne de commande. Si vous souhaitez modifier l'hôte sur lequel il est servi, vous devrez implémenter la test()
méthode de SimpleHTTPServer
et BaseHTTPServer
vous - même. Mais cela devrait être vraiment facile.
Voici comment vous pouvez le faire assez facilement:
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()
Et pour l'utiliser:
> 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
permet la liaison tout de suite, par exemple ,python3 -m http.server --bind 127.0.0.1 8000
il suffiraitSimpleHTTPServer
est mono-thread et bloquant, ce qui signifie que vous ne pourrez pas faire une autre requête tant que la requête précédente n'est pas terminée. Et il n'a pas de support de plage, par exemple pour le streaming / la recherche d'un fichier multimédia à partir d'une position spécifique. Une meilleure alternative esttwisted
(pip install twisted
) avec laquelle vous pouvez exécutertwistd -n web --path /
. Il peut également faire du FTP anonyme avectwistd -n ftp -p 2121 -r /
. Plus de one-liners de serveur http: gist.github.com/willurd/5720255 .