पायथन के http.server (या SimpleHTTPServer) के लिए एक तेज़ विकल्प क्या है?


300

अजगर है http.server (या SimpleHTTPServer अजगर 2 के लिए) कमांड लाइन से वर्तमान निर्देशिका की सामग्री की सेवा की एक शानदार तरीका है:

python -m http.server

हालाँकि, जहाँ तक वेब सर्वर जाते हैं, यह बहुत ही स्लो है ...

यह मानती है कि यह एकल थ्रेडेड है, और कभी-कभी आवश्यकता के अनुसार जावास्क्रिप्ट एएमडी मॉड्यूल लोड करते समय टाइमआउट त्रुटियों का कारण बनता है। एक साधारण पृष्ठ को बिना किसी चित्र के लोड करने में पाँच से दस सेकंड का समय लग सकता है।

क्या एक तेज़ विकल्प है जो बस के रूप में सुविधाजनक है?


17
इस धागे ने सिर्फ मेरी पवित्रता को बहाल किया। मैं SimpleHTTPServer का उपयोग कर रहा था और मुझे नट्स ड्राइविंग कर रहे थे कि आवश्यकता के साथ यादृच्छिक त्रुटियाँ हो रही थीं! नोड का http-server एक आकर्षण की तरह काम कर रहा है। धन्यवाद!
डेव कैडवलडर 21

4
@ChrisF, मैं के अनुसार प्रश्न संपादित किया है इस निर्देश के लिए और अधिक व्याकरण की दृष्टि से तथ्य यह है कि यह दर्शाते है वास्तव में एक जवाबदेह सवाल। मैंने उस समस्या का वर्णन किया है जिसका मैंने सामना किया (अर्थात्, टाइमआउट और व्यर्थ समय), और मैं इस समस्या को दूर करने के लिए मैंने जो किया था उसे सूचीबद्ध नहीं कर सका क्योंकि मुझे किसी विकल्प का पता नहीं था। मुझे नहीं लगता कि यह प्रश्न "आपके पसंदीदा ___" आकार में फिट बैठता है, क्योंकि मापदंड स्पष्ट रूप से परिभाषित हैं। विभिन्न आगंतुकों को अलग-अलग उत्तर अधिक उपयोगी लग सकते हैं, और उत्तर दिए गए मानदंड के अनुरूप नहीं हो सकते हैं।
आकर्षित नोक

26
प्यार कैसे एसओ लोगों की पसंदीदा सवालों को बंद करने की आदत है ...
isomorphismes

4
यह प्रश्न केवल उपयोगी नहीं है, यह उस विवरण से भी मेल नहीं खाता है जिसके लिए इसे बंद किया जा रहा है। कम से कम अनुसंधान पहले ही किया जा चुका है ...
ब्रायन लार्सन

3
एक अन्य विकल्प, यदि आप गिट रेपो की सेवा करना चाहते हैं, तो है git instaweb
ड्रू नोक

जवाबों:


394

नोड.जेएस के लिए http-server बहुत सुविधाजनक है, और पायथन के सिम्पल टीटीपीएसवर की तुलना में बहुत तेज है। यह मुख्य रूप से है क्योंकि यह क्रमिक अनुरोधों के बजाय अनुरोधों के समवर्ती हैंडलिंग के लिए अतुल्यकालिक IO का उपयोग करता है।

स्थापना

यदि आप पहले से ही नहीं है, तो node.js स्थापित करें। तब पैकेज npmको स्थापित करने के लिए नोड पैकेज मैनेजर ( ) का उपयोग करें, -gविश्व स्तर पर स्थापित करने के विकल्प का उपयोग करके । यदि आप विंडोज पर हैं, तो आपको प्रशासक की अनुमति के साथ एक प्रॉम्प्ट की आवश्यकता होगी, और लिनक्स / ओएसएक्स पर आप sudoकमांड करना चाहते हैं :

npm install http-server -g

यह किसी भी आवश्यक निर्भरता को डाउनलोड करेगा और इंस्टॉल करेगा http-server

उपयोग

अब, किसी भी डायरेक्टरी से, आप टाइप कर सकते हैं:

http-server [path] [options]

पथ वैकल्पिक है, ./publicअगर यह मौजूद है, तो डिफ़ॉल्ट रूप से ./

विकल्प हैं [चूक]:

  • -p पोर्ट संख्या [8080] पर सुनने के लिए
  • -a [स्थानीय होस्ट] को बाँधने के लिए मेजबान का पता
  • -i प्रदर्शन निर्देशिका सूचकांक पृष्ठ [सच]
  • -sया --silentसाइलेंट मोड कंसोल में प्रवेश नहीं करेगा
  • -hया --helpप्रदर्शन संदेश और बाहर निकलने में मदद करते हैं

तो पोर्ट 8000 पर वर्तमान निर्देशिका की सेवा करने के लिए टाइप करें:

http-server -p 8000

12
यह कमाल का है!! यह इंगित करने के लिए धन्यवाद। यह स्ट्रीमिंग ऑडियो / वीडियो के परीक्षण के लिए बहुत अच्छा है, जो कि कुछ अजगर सर्वर को अच्छी तरह से संभालने के लिए प्रतीत नहीं होता है।
gman

1
@ साल्मोफेस, क्या आपने निश्चित रूप से -gविकल्प का उपयोग किया था, और क्या आपने यह सुनिश्चित किया है कि स्थापना के दौरान कोई त्रुटि नहीं छपी थी? उस त्रुटि का मतलब है कि यह स्थापित होने के बाद नहीं पाया जा सकता है, जो लगता है कि अगर चीजें अच्छी तरह से चली गई तो संभावना नहीं है। आप किस मंच पर हैं? नाम के साथ एक फ़ाइल खोजने के लिए अपने ड्राइव में एक खोज आदेश चलाएँ http-server। मैंने कुछ अलग लिनक्स डिस्ट्रोस और विंडोज संस्करणों पर इसका सफलतापूर्वक उपयोग किया है।
ड्रू नोक

2
मैं सिर्फ यह पुष्टि करना चाहता हूं कि इस समाधान का उपयोग करने से मेरे पेज लोड समय में 20 से 2 एस तक सुधार हुआ है!
0leg

1
ठीक है, पहली बार में यह अजगर SimpleHTTPServer पर एक सुधार था जब तक मैं स्मृति से बाहर भाग गया। http-server बड़ी फ़ाइलों के लिए बड़ी मात्रा में मेमोरी की खपत करता है। Myserver.go प्रस्ताव तेजी से 5 जीबी मेमोरी के बजाय सिर्फ 2 एमबी का उपभोग करता है, स्वैप शुरू करने और वास्तव में धीमा होने से पहले।
डेनियल

2
नवंबर 2019 तक ऐसा लग रहा है कि कई महीनों के लिए विंडोज़ उपयोगकर्ताओं के लिए http-server टूट गया है। इसके कई आश्रित इस तरह से बाहर हैं। उनमें से एक, परमानंद, अब छोड़ दिया गया है तो यह स्पष्ट नहीं है कि कब या अगर इसे ठीक किया जाएगा। मैंने खुद को ठीक करने की कोशिश की, लेकिन यह भी स्पष्ट नहीं है कि देवता पीआर लेंगे। इसलिए, मैंने अपना प्रतिस्थापन लिखा ।
9

105

मेरा सुझाव है: मुड़ ( http://twistedmatrix.com )

पायथन में लिखित और खुले स्रोत एमआईटी लाइसेंस के तहत लाइसेंस प्राप्त एक घटना-संचालित नेटवर्किंग इंजन।

यह क्रॉस-प्लेटफॉर्म है और इसे 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

"वेब" एक कमांड है जो ट्विस्टेड एसिंक्स इंजन के शीर्ष पर एक साधारण वेब सर्वर चलाता है। यह कमांड लाइन विकल्प भी स्वीकार करता है ("वेब" कमांड के बाद - 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

स्थापना

उबंटू

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

खिड़कियाँ

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

HTTPS

कनेक्शन को एन्क्रिप्ट करने के लिए ट्विस्टेड सुरक्षा प्रमाणपत्रों का भी उपयोग कर सकता है। अपने मौजूदा --pathऔर --port(सादे HTTP के लिए) विकल्पों के साथ इसका उपयोग करें।

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

5
जब तक आपके पास पहले से नोड.जेएस नहीं है, तब तक मुझे यह सबसे सुविधाजनक लगता है। साझा करने के लिए धन्यवाद!
क्रिस जे

3
उबंटू पर, आपको sudo apt-get install python-twisted-webपहले करना होगा। (इस उत्तर के लिए धन्यवाद, यह बहुत सुविधाजनक है!)
nkorth

2
ट्विस्टेड वन लाइन सर्वर का एक विशेष लाभ, यह रेज़्यूमेबल डाउनलोड (बाइट रेंज सपोर्ट) का समर्थन करता है, और जब आप बड़ी फ़ाइलों को डाउनलोड कर रहे होते हैं तो इसमें एक सुविधा होनी चाहिए।
पंकज

7
नोड का उपयोग करते हुए मेरे लिए वीडियो / ऑडियो को ठीक से स्ट्रीम नहीं किया, हालांकि ट्वीड का उपयोग करना बहुत अच्छा काम करता है!
dizy

2
आप बंदरगाहों को कॉन्फ़िगर कर सकते हैं और अन्य विकल्पों का उपयोग कर सकते हैं twistd --helpऔर twistd web --help। मुझे यह पता लगाने में थोड़ा समय लगा।
एहतेश चौधरी 20

30

1.0 में एक HTTP सर्वर और कोड की कुछ पंक्तियों के साथ फ़ाइलों की सेवा के लिए उपयोग शामिल है

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


बहुत बढ़िया जवाब। यह SimpleHTTPServer और नोडज समाधान से तेज चलता है। :) क्या कोई ऐसा तरीका है जिससे मैं उपयोगकर्ता नाम और पासवर्ड डाउनलोड में जोड़ सकता हूं?
अजाक्स

21

वेबफ़ास्ट आज़माएं , यह छोटा है और यह किसी प्लेटफ़ॉर्म पर निर्भर नहीं है जैसे कि नोड .js या अजगर स्थापित है।


1
लगता है कि आपको इसे संकलित करना है? डाउनलोड के लिए कोई बायनेरी नहीं देखा।
BrainSlugs83

2
हां, जब तक आपके डिस्ट्रो में यह नहीं है। डेबियन और उबंटू में यह है:apt-get install webfs
हडॉन

4
मैंने brew install webfsअपने मैक पर किया, जिसके परिणामस्वरूप 🍺 /usr/local/Cellar/webfs/1.21: 5 files, 96K, built in 15 seconds। बाद में मैं बस के webfsd -F -p 3003 -r resources/public/ -f index.htmlरूप में प्राप्त करने के लिए कह सकता था twistd -no web -p 3003 --path=resources/public/। यह थोड़ा चिंताजनक है कि याद रखना स्पष्ट नहीं है, लेकिन ट्विस्ट या सिंपल टीटीपीएसवर के विकल्प के रूप में जानना अच्छा है।
गत

अन्य समाधानों की तुलना में बहुत बेहतर है। यह बहुत छोटा है, बहुत तेज है और ओएस पैकेज के रूप में प्रदान किया गया है। यह एसएसएल का भी समर्थन करता है और सिस्टम डेमॉन के रूप में चल सकता है।
फेडेरिको

14

यदि आप 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

11

यहाँ एक और है। यह एक क्रोम एक्सटेंशन है

एक बार इंस्टॉल होने के बाद आप इसे क्रोम में एक नया टैब बनाकर और ऊपर बाईं ओर स्थित एप्स बटन पर क्लिक करके चला सकते हैं

इसमें एक सरल गुई है। फ़ोल्डर चुनें पर क्लिक करें, फिर http://127.0.0.1:8887लिंक पर क्लिक करें

यहां छवि विवरण दर्ज करें

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


8

इसके अलावा देव को एक छोटे से वेबसर्वर के रूप में जाना पर विचार करें। कई प्लेटफार्मों के लिए बायनेरिज़ यहाँ उपलब्ध हैं

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

यह छोटा है, तेज़ है, और कुछ दिलचस्प वैकल्पिक सुविधाएँ प्रदान करता है जैसे कि आपकी फ़ाइलें बदलने पर लाइव-रीलोडिंग।


7

मुझे python -m http.serverअविश्वसनीय लगा- कुछ प्रतिक्रियाओं में कुछ सेकंड लगेंगे।

अब मैं Ran https://github.com/m3ng9i/ran नामक सर्वर का उपयोग करता हूं

रैन: गो में लिखा गया एक साधारण स्टेटिक वेब सर्वर


5

पोलीप्टा एक कोशिश दे ...

npm स्थापित -g polpetta

तब आप कर सकते हो

polpetta ~ / फ़ोल्डर

और आप जाने के लिए तैयार हैं :-)


1
क्या आप इस बात का विस्तार कर सकते हैं कि हमें पोपट्टा को क्यों आज़माना चाहिए ?
डेन डैस्कलेस्कु

3

सर्वर के रूप में सेवा का उपयोग करना

  1. Servez डाउनलोड करें
  2. इसे स्थापित करें, इसे चलाएं
  3. सेवा करने के लिए फ़ोल्डर चुनें
  4. "प्रारंभ" चुनें
  5. http://localhost:8080"लॉन्च ब्राउज़र" पर जाएं या चुनें

servez

नोट: मैंने इसे एक साथ फेंक दिया क्योंकि क्रोम के लिए वेब सर्वर दूर जा रहा है क्योंकि क्रोम ऐप्स के लिए समर्थन हटा रहा है और क्योंकि मैं कला छात्रों का समर्थन करता हूं जिनके पास कमांड लाइन के साथ शून्य अनुभव है


मैं वेबगेल के उदाहरणों के लिए वोट कर रहा हूं
फेलिप

2

मुझे लाइव-सर्वर पसंद है । यह तेज़ है और इसमें एक अच्छा लाइव रिलोड फीचर है, जो डेवलपमेंट के दौरान बहुत सुविधाजनक है।

उपयोग बहुत सरल है:

cd ~/Sites/
live-server

डिफ़ॉल्ट रूप से यह आईपी 127.0.0.1 और पोर्ट 8080 के साथ एक सर्वर बनाता है।

http://127.0.0.1:8080/

यदि पोर्ट 8080 मुक्त नहीं है, तो यह दूसरे पोर्ट का उपयोग करता है:

http://127.0.0.1:52749/

http://127.0.0.1:52858/

यदि आपको अपने स्थानीय नेटवर्क की अन्य मशीनों पर वेब सर्वर को देखने की आवश्यकता है, तो आप जांच सकते हैं कि आपका आईपी क्या है और उपयोग करें:

live-server --host=192.168.1.121

और यहां एक स्क्रिप्ट है जो डिफ़ॉल्ट इंटरफ़ेस के आईपी पते को स्वचालित रूप से पकड़ती है। यह केवल macOS पर काम करता है

यदि आप इसे डालते हैं .bash_profile, तो live-serverकमांड स्वचालित रूप से सही आईपी के साथ सर्वर को लॉन्च करेगा।

# **
# 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'

1

यदि आपके पास PHP स्थापित है तो आप बिल्ट सर्वर का उपयोग कर सकते हैं।

php -S 0:8080

0

फिर भी एक और नोड आधारित सरल कमांड लाइन सर्वर

https://github.com/greggman/servez-cli

विशेष रूप से विंडोज़ पर HTTP- सर्वर के मुद्दों के जवाब में आंशिक रूप से लिखा गया है।

स्थापना

उसके बाद नोड स्थापित करें

npm install -g servez

प्रयोग

servez [options] [path]

कोई रास्ता नहीं के साथ यह वर्तमान फ़ोल्डर में कार्य करता है।

index.htmlयदि यह मौजूद है तो डिफ़ॉल्ट रूप से यह फ़ोल्डर पथों के लिए कार्य करता है। यह अन्यथा फ़ोल्डर के लिए एक निर्देशिका लिस्टिंग का कार्य करता है। यह भी CORS हेडर का कार्य करता है। आप वैकल्पिक रूप से मूल प्रमाणीकरण चालू --username=somename --password=somepassकर सकते हैं और आप https की सेवा कर सकते हैं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.