Что является более быстрой альтернативой Python http.server(или SimpleHTTPServer)?

Python http.server (или SimpleHTTPServer для Python 2) - отличный способ обслуживать содержимое текущего каталога из командной строки:

python -m http.server

Однако, что касается веб-серверов, это очень slooooow...

Он ведет себя так, как будто он однопоточный, и иногда вызывает ошибки при загрузке модулей JavaScript AMD с использованием RequireJS. Для загрузки простой страницы без изображений может потребоваться от пяти до десяти секунд.

Какая более быстрая альтернатива так же удобна?

Ответ 1

http-server для node.js очень удобно и намного быстрее, чем Python SimpleHTTPServer. Это связано прежде всего с тем, что он использует асинхронный ввод-вывод для одновременной обработки запросов вместо сериализации запросов.

Установка

Установите node.js, если вы еще этого не сделали. Затем используйте диспетчер пакетов node (npm), чтобы установить пакет, используя параметр -g для установки по всему миру. Если вы находитесь в Windows, вам понадобится приглашение с правами администратора, а в Linux/OSX вы захотите sudo выполнить команду:

npm install http-server -g

Загрузите все необходимые зависимости и установите http-server.

Использование

Теперь из любой директории вы можете ввести:

http-server [path] [options]

Путь необязателен, по умолчанию используется ./public, если он существует, в противном случае ./.

Параметры: [по умолчанию]:

  • -p Номер порта для прослушивания [8080]
  • -a Адрес хоста для привязки к [localhost]
  • -i Показать страницы индекса каталога [True]
  • -s или --silent Тихий режим не будет входить в консоль
  • -h или --help Отображает справочное сообщение и завершает

Итак, чтобы обслуживать текущий каталог на порту 8000, введите:

http-server -p 8000

Ответ 2

Я рекомендую: Twisted (http://twistedmatrix.com)

управляемый событиями сетевой движок, написанный на Python и лицензированный по лицензии MIT с открытым исходным кодом.

Он кроссплатформенный и был предустановлен на OS X 10.5 до 10.12. Помимо прочего, вы можете запустить простой веб-сервер в текущем каталоге:

twistd -no web --path=.

подробности

Объяснение опций (подробнее см. twistd --help):

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

"web" - это команда, которая запускает простой веб-сервер поверх асинхронного механизма Twisted. Он также принимает параметры командной строки (после команды "web" - см. twistd web --help для более подробной информации):

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

Есть также множество других команд, таких как:

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

Монтаж

Ubuntu

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

Mac OS-X (предустановлен на 10.5 - 10.12 или доступен в MacPorts и через Pip)

sudo port install py-twisted

Windows

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

HTTPS

Twisted также может использовать сертификаты безопасности для шифрования соединения. Используйте это с вашими существующими --path и --port (для простого HTTP).

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

Ответ 3

1.0 включает http server и использовать для обслуживания файлов с несколькими строками кода.

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

Запустите этот источник с помощью go run myserver.go или для создания исполняемого файла go build myserver.go

Ответ 4

Попробуйте webfs, он крошечный и не зависит от наличия платформы, такой как node.js или python.

Ответ 5

Если вы используете Mercurial, вы можете использовать встроенный HTTP-сервер. В папке, которую вы хотите подать:

hg serve

Из документов:

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

Ответ 6

Здесь другое. Это расширение Chrome

После установки вы можете запустить его, создав новую вкладку в Chrome и нажав кнопку приложений в левом верхнем углу.

У него простой графический интерфейс. Нажмите "Выбрать папку", затем нажмите ссылку http://127.0.0.1:8887

enter image description here

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

Ответ 7

Также рассмотрите devd небольшой веб-сервер, написанный в go. Здесь доступны бинарные файлы для многих платформ здесь.

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

Он маленький, быстрый и предоставляет некоторые интересные дополнительные функции, такие как перезагрузка при изменении файлов.

Ответ 8

Я нашел python -m http.server ненадежным - некоторые ответы заняли бы секунды.

Теперь я использую сервер под названием Ran https://github.com/m3ng9i/ran

Ran: простой статический веб-сервер, написанный на Go

Ответ 9

дайте polpetta попробовать...

npm install -g polpetta​​p >

то вы можете

polpetta ~/folder

и вы готовы к работе: -)

Ответ 10

Использование Servez в качестве сервера

  1. Скачать Сервез
  2. Установите его, запустите
  3. Выберите папку для обслуживания
  4. Пик "Старт"
  5. Зайдите на http://localhost:8080 или выберите "Запустить браузер"

servez

Примечание. Я создал это вместе, потому что веб-сервер для Chrome исчезает, поскольку Chrome убирает поддержку приложений, а также потому, что я поддерживаю студентов, которые не имеют опыта работы с командной строкой.

Ответ 11

Мне нравится live-сервер. Он быстрый и имеет приятную функцию перезагрузки в реальном времени, что очень удобно во время разработки.

Использование очень просто:

cd ~/Sites/
live-server

По умолчанию он создает сервер с IP 127.0.0.1 и портом 8080.

http://127.0.0.1:8080/

Если порт 8080 не свободен, он использует другой порт:

http://127.0.0.1:52749/

http://127.0.0.1:52858/

Если вам нужно увидеть веб-сервер на других компьютерах в вашей локальной сети, вы можете проверить, какой у вас IP, и использовать:

live-server --host=192.168.1.121

А вот скрипт, который автоматически захватывает IP-адрес интерфейса по умолчанию. Работает только на macOS.

Если вы поместите его в .bash_profile, команда live-server автоматически запустит сервер с правильным IP.

# **
# Get IP address of default interface
# *
function getIPofDefaultInterface()
{
    local  __resultvar=$1

    # Get default route interface
    if=$(route -n get 0.0.0.0 2>/dev/null | awk '/interface: / {print $2}')
    if [ -n "$if" ]; then
            # Get IP of the default route interface
            local __IP=$( ipconfig getifaddr $if )
            eval $__resultvar="'$__IP'"
    else
        # Echo "No default route found"
        eval $__resultvar="'0.0.0.0'"
    fi
}

alias getIP='getIPofDefaultInterface IP; echo $IP'

# **
# live-server
# https://www.npmjs.com/package/live-server
# *
alias live-server='getIPofDefaultInterface IP && live-server --host=$IP'