Qual è un’alternativa più veloce a http.server di Python (o SimpleHTTPServer)?

Il http.server di Python (o SimpleHTTPServer per Python 2) è un ottimo modo per servire i contenuti della directory corrente dalla riga di comando:

python -m http.server 

Tuttavia, per quanto riguarda i server web, è molto slooooow …

Funziona come se fosse un singolo thread e occasionalmente genera errori di timeout durante il caricamento dei moduli JavaScript AMD utilizzando RequireJS. Possono essere necessari da cinque a dieci secondi per caricare una pagina semplice senza immagini.

Qual è un’alternativa più veloce che è altrettanto conveniente?

http-server per node.js è molto conveniente ed è molto più veloce di SimpleHTTerver di Python. Ciò è principalmente dovuto all’utilizzo dell’IO asincrono per la gestione simultanea delle richieste, anziché per la serializzazione delle richieste.

Installazione

Installa node.js se non lo hai già fatto. Quindi utilizzare il gestore pacchetti nodo ( npm ) per installare il pacchetto, utilizzando l’opzione -g per l’installazione a livello globale. Se sei su Windows avrai bisogno di un prompt con i permessi di amministratore, e su Linux / OSX ti consigliamo di sudo il comando:

 npm install http-server -g 

Questo scaricherà tutte le dipendenze richieste e installerà http-server .

Uso

Ora, da qualsiasi directory, puoi digitare:

 http-server [path] [options] 

Il percorso è facoltativo, in modo predefinito su ./public se esiste, altrimenti ./ .

Le opzioni sono [predefinite]:

  • -p Il numero della porta da ascoltare su [8080]
  • -a L’indirizzo dell’host da associare a [localhost]
  • -i Mostra le pagine indice delle directory [Vero]
  • -s o --silent modalità silenziosa non registra nella console
  • -h o --help Visualizza il messaggio di aiuto ed esce

Quindi, per servire la directory corrente sulla porta 8000, digitare:

 http-server -p 8000 

Raccomando: Twisted ( http://twistedmatrix.com )

un motore di rete basato su eventi scritto in Python e concesso in licenza con la licenza MIT open source.

È multipiattaforma e viene preinstallato su OS X dal 10.5. Tra le altre cose è ansible avviare un semplice web server nella directory corrente con:

 twistd -no web --path=. 

Dettagli

Spiegazione delle opzioni (vedi twistd --help per maggiori informazioni):

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

“web” è un comando che esegue un semplice server Web sulla parte superiore del motore asincrono Twisted. Accetta anche le opzioni della riga di comando (dopo il comando “web” – vedi twistd web --help per ulteriori informazioni):

  --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. 

Ci sono anche molti altri comandi come:

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

Installazione

Ubuntu

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

Mac OS-X (viene preinstallato dal 10.5 o è disponibile in MacPorts)

 sudo port install py-twisted 

windows

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

HTTPS

Twisted può anche utilizzare i certificati di sicurezza per crittografare la connessione. Utilizzare questo con le --path e --port (per HTTP semplici) esistenti.

 twistd -no web -c cert.pem -k privkey.pem --https=4433 

go 1.0 include un server http e un util per servire file con poche righe di codice.

 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) } } 

Esegui questa fonte usando go run myserver.go o per build un eseguibile go build myserver.go

Prova webfs , è piccolo e non dipende dall’avere installato una piattaforma come node.js o python.

Se usi Mercurial, puoi usare il server HTTP integrato. Nella cartella che desideri pubblicare:

 hg serve 

Dai documenti :

 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 

Eccone un altro È un’estensione di Chrome

Una volta installato, puoi eseguirlo creando una nuova scheda in Chrome e facendo clic sul pulsante App in alto a sinistra

Ha un semplice gui. Fai clic su scegli cartella, quindi fai clic sul link http://127.0.0.1:8887

inserisci la descrizione dell'immagine qui

https://www.youtube.com/watch?v=AK6swHiPtew

Considerare anche devd un piccolo server web scritto in go. I binari per molte piattaforms sono disponibili qui .

 devd -ol path/to/files/to/serve 

È piccolo, veloce e offre alcune interessanti funzionalità opzionali come il live-ricaricamento quando i tuoi file cambiano.

dai una polpetta …

npm install -g polpetta

allora puoi

polpetta ~ / cartella

e sei pronto per andare 🙂

Ho trovato python -m http.server inaffidabile: alcune risposte richiederebbero secondi.

Ora utilizzo un server chiamato Ran https://github.com/m3ng9i/ran

Ran: un semplice server Web statico scritto in Go

Usando Servez come server

  1. Scarica Servez
  2. Installalo, eseguilo
  3. Scegli la cartella da servire
  4. Scegli “Inizia”
  5. Vai a http://localhost:8080 o seleziona “Launch Browser”

servez

Nota: ho buttato tutto questo perché Web Server per Chrome è andato via da quando Chrome sta rimuovendo il supporto per le app e perché supporto gli studenti d’arte che non hanno esperienza con la riga di comando