317 votes

Quelle est une alternative plus rapide à SimpleHTTPServer de Python ?

SimpleHTTPServer de Python est un excellent moyen de servir le contenu du répertoire courant à partir de la ligne de commande :

python -m SimpleHTTPServer

Cependant, en ce qui concerne les serveurs Web, il est très lent...

Il se comporte comme s'il était monofilaire et provoque parfois des erreurs de délai d'attente lors du chargement des modules JavaScript AMD à l'aide de RequireJS. Le chargement d'une page simple, sans images, peut prendre de cinq à dix secondes.

Quelle est une alternative plus rapide et tout aussi pratique ?

406voto

Drew Noakes Points 69288

serveur http pour node.js est très pratique, et beaucoup plus rapide que SimpleHTTPServer de Python.

Installation

Installez node.js si vous ne l'avez pas encore fait. Utilisez ensuite le gestionnaire de paquets node ( npm ) pour installer le paquet, en utilisant l'option -g pour une installation globale. Si vous êtes sous Windows, vous aurez besoin d'une invite avec des droits d'administrateur, et sous Linux/OSX vous voudrez sudo la commande :

npm install http-server -g

Ceci téléchargera toutes les dépendances requises et installera http-server .

Utilisez

Maintenant, à partir de n'importe quel répertoire, vous pouvez taper :

http-server [path] [options]

Le chemin d'accès est facultatif, il prend par défaut la valeur ./public s'il existe, sinon ./ .

Les options sont [defaults] :

  • -p Le numéro de port sur lequel il faut écouter [8080].
  • -a L'adresse de l'hôte à laquelle se lier [localhost].
  • -i Afficher les pages d'index du répertoire [Vrai]
  • -s ou --silent Le mode silencieux ne permet pas d'accéder à la console
  • -h ou --help Affiche le message d'aide et quitte

Donc pour servir le répertoire courant sur le port 8000, tapez :

http-server -p 8000

113voto

Peter Gibson Points 5376

Je recommande : Torsadé ( http://twistedmatrix.com )

un moteur de mise en réseau piloté par les événements, écrit en Python et placé sous la licence open source MIT.

Il est multiplateforme et est préinstallé sur OS X depuis la version 10.5. Entre autres choses, vous pouvez démarrer un simple serveur web dans le répertoire courant avec :

twistd -no web --path=.

Détails

Explication des options (voir twistd --help pour en savoir plus) :

-n, --nodaemon       don't daemonize, don't use default umask of 0077
-o, --no_save        do not save state on shutdown

"web" est une commande qui exécute un serveur web simple au dessus du moteur asynchrone Twisted. Elle accepte également les options de la ligne de commande (après la commande "web" - cf. twistd web --help pour en savoir plus) :

  --path=             <path> is either a specific file or a directory to be
                      set as the root of the web server. Use this if you
                      have a directory full of HTML, cgi, php3, epy, or rpy
                      files or any other files that you want to be served up
                      raw.

Il y a aussi un tas d'autres commandes telles que :

conch            A Conch SSH service.
dns              A domain name server.
ftp              An FTP server.
inetd            An inetd(8) replacement.
mail             An email service
... etc

Installation

Ubuntu

sudo apt-get install python-twisted-web (or python-twisted for the full engine)

Mac OS-X (préinstallé depuis 10.5, ou disponible dans Macports)

sudo port install py-twisted

Windows

installer available for download at http://twistedmatrix.com/

33voto

pd40 Points 2049

Allez sur 1.0 comprend une serveur http & util pour servir les fichiers avec quelques lignes de code.

package main

import (
    "fmt"; "log"; "net/http"
)

func main() {
    fmt.Println("Serving files in the current directory on port 8080")
    http.Handle("/", http.FileServer(http.Dir(".")))
    err := http.ListenAndServe(":8080", nil)
    if err != nil {
        log.Fatal("ListenAndServe: ", err)
    }
}

Exécuter cette source en utilisant go run myserver.go ou pour construire un exécutable go build myserver.go

21voto

Hudon Points 769

Essayez webfs Il est minuscule et ne dépend pas de l'installation d'une plateforme comme node.js ou python.

15voto

Drew Noakes Points 69288

Si vous utilisez Mercurial, vous pouvez utiliser le serveur HTTP intégré. Dans le dossier que vous souhaitez servir :

hg serve

De les docs :

export the repository via HTTP

    Start a local HTTP repository browser and pull server.

    By default, the server logs accesses to stdout and errors to
    stderr. Use the "-A" and "-E" options to log to files.

options:

 -A --accesslog       name of access log file to write to
 -d --daemon          run server in background
    --daemon-pipefds  used internally by daemon mode
 -E --errorlog        name of error log file to write to
 -p --port            port to listen on (default: 8000)
 -a --address         address to listen on (default: all interfaces)
    --prefix          prefix path to serve from (default: server root)
 -n --name            name to show in web pages (default: working dir)
    --webdir-conf     name of the webdir config file (serve more than one repo)
    --pid-file        name of file to write process ID to
    --stdio           for remote clients
 -t --templates       web templates to use
    --style           template style to use
 -6 --ipv6            use IPv6 in addition to IPv4
    --certificate     SSL certificate file

use "hg -v help serve" to show global options

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X