2011-08-11 6 views
220

मुझे यकीन नहीं है कि यह फ्लास्क विशिष्ट है, लेकिन जब मैं देव मोड (http://localhost:5000) में ऐप चलाता हूं, तो मैं इसे नेटवर्क पर अन्य मशीनों से एक्सेस नहीं कर सकता (http://[dev-host-ip]:5000 के साथ)। देव मोड में रेल के साथ, उदाहरण के लिए, यह ठीक काम करता है। मुझे Flask dev सर्वर कॉन्फ़िगरेशन से संबंधित कोई दस्तावेज़ नहीं मिला। किसी भी विचार को इसे सक्षम करने के लिए कॉन्फ़िगर किया जाना चाहिए?नेटवर्क पर दिखाई देने के लिए फ्लास्क देव सर्वर को कॉन्फ़िगर करें

उत्तर

385

हालांकि यह संभव है, आपको उत्पादन में फ्लास्क देव सर्वर का उपयोग नहीं करना चाहिए। Flask dev सर्वर को विशेष रूप से सुरक्षित, स्थिर, या कुशल होने के लिए डिज़ाइन नहीं किया गया है। सही समाधान के लिए deploying पर दस्तावेज़ देखें।


अपने app.run() पर पैरामीटर जोड़ें। डिफ़ॉल्ट रूप से यह स्थानीय मशीन पर चलता है, इसे अपने मशीन आईपी पते पर चलाने के लिए app.run(host= '0.0.0.0') पर बदलें।

पर Quickstart page "बाहर से दिखाई देने सर्वर" के अंतर्गत बोतल साइट पर प्रलेखित:

Externally Visible Server

If you run the server you will notice that the server is only available from your own computer, not from any other in the network. This is the default because in debugging mode a user of the application can execute arbitrary Python code on your computer. If you have debug disabled or trust the users on your network, you can make the server publicly available.

Just change the call of the run() method to look like this:

app.run(host='0.0.0.0')

This tells your operating system to listen on a public IP.

+18

एक विशिष्ट आईपी app.run को सेट करने के लिए (मेजबान = "192.168.1.7", बंदरगाह = 5010) अगर काम करने के लिए लाइनों के नीचे जोड़ें आपके पीसी में कुछ आईपी हैं – lxx

10

अपने cool एप्लिकेशन यह विन्यास एक बाहरी फ़ाइल से लोड है है, तो निम्न उदाहरण की तरह है, तो मत भूलना होस्ट = "0.0.0.0"

cool.app.run(
    host=cool.app.config.get("HOST", "localhost"), 
    port=cool.app.config.get("PORT", 9000) 
)    
+1

फ्लास्क कॉन्फ़िगरेशन में होस्टनाम और पोर्टनंबर को स्टोर करने का यह एक अच्छा तरीका है। मैं बिल्कुल इस समाधान की तलाश में था। – compie

-1

@ शॉन का जवाब देने के लिए जोड़ा जा रहा है के साथ इसी कॉन्फ़िग फ़ाइल को अद्यतन करने, वहाँ भी अंतर्निहित विन्यास चर SERVER_NAME है। हम इसे config.config.from_pyfile ("config.py") में निर्दिष्ट कॉन्फ़िगरेशन फ़ाइल में 0.0.0.0 पर सेट कर सकते हैं। यह भी ध्यान रखें कि, यह app.run होस्ट नाम ओवरराइड करेगा।
संदर्भ: http://flask.pocoo.org/docs/0.10/config/

+6

यदि आप इस उत्तर का पालन करते हैं, तो आप SERVER_NAME के ​​लिए अपनी कॉन्फ़िगरेशन फ़ाइल में एक प्रविष्टि डाल देंगे, यह निष्कर्ष निकाला है कि ऐसा करने के लिए ऐसा नहीं किया जाता है, इसके बारे में भूल जाओ, स्वीकृत उत्तर आज़माएं और अपना समय बर्बाद करने की अपरिभाषित राशि के बाद पता लगाएं कि जब आप अपनी कॉन्फ़िगरेशन फ़ाइल से SERVER_NAME को हटाते हैं तो यह काम करता है और फिर आप यहां वापस आकर इस जवाब को कम कर देंगे। – gnebehay

31

आप कुप्पी निष्पादन का उपयोग करते हैं अपने सर्वर शुरू करने के लिए, आप flask run --host=0.0.0.0 उपयोग कर सकते हैं 127.0.0.1 से डिफ़ॉल्ट बदल सकते हैं और गैर स्थानीय कनेक्शन के लिए इसे खोलने के लिए। कॉन्फ़िगरेशन और app.run विधियां जो अन्य उत्तरों का वर्णन करती हैं शायद बेहतर अभ्यास हैं लेकिन यह भी आसान हो सकती है।

Externally Visible Server If you run the server you will notice that the server is only accessible from your own computer, not from any other in the network. This is the default because in debugging mode a user of the application can execute arbitrary Python code on your computer.

If you have the debugger disabled or trust the users on your network, you can make the server publicly available simply by adding --host=0.0.0.0 to the command line:

flask run --host=0.0.0.0 This tells your operating system to listen on all public IPs.

संदर्भ: http://flask.pocoo.org/docs/0.11/quickstart/

+1

मुझे नहीं पता कि किसी और ने इसका अनुभव किया है, लेकिन मैंने क्विकस्टार्ट दस्तावेज़ों के अनुसार पहले इस विधि को आजमाया, लेकिन कुछ अजीब कारणों से आईपी '127.0.0.1' पर चल रहा था (मैंने अपना फ्लास्क निष्पादन योग्य तरीके से सेटअप किया है, या तो ऐसा लग रहा था, यकीन नहीं था कि मैं क्या गलत कर रहा था)। हालांकि, 'app.run (host =' 0.0.0.0 ') जोड़ने के बाद, जैसा कि मेरी सर्वर फ़ाइल में किसी अन्य उत्तर में उल्लेख किया गया है, मैं नेटवर्क पर पृष्ठ तक पहुंचने में सक्षम था। किसी और के पास कोई समस्या है जैसा मैंने वर्णन किया है या उस पर कोई जानकारी है? – natureminded

2

अपनी परियोजना

if __name__ == '__main__': 
    app.debug = True 
    app.run(host = '0.0.0.0',port=5005) 
+0

मुझे 'ओएसईआरआरआर मिल रहा है: [WinError 10013] अपनी एक्सेस अनुमतियों द्वारा प्रतिबंधित सॉकेट तक पहुंचने के लिए एक प्रयास किया गया था – pyd

+0

** ** ठीक करने के तरीकों के लिए ** आपको व्यवस्थापक के रूप में चलाने के साथ पाइथन फ़ाइल चलाने की आवश्यकता है और जांचें कोई भी पोर्ट विंडोज़ 'netstat -na | findstr 5005' पर चल रहा है। –

संबंधित मुद्दे

 संबंधित मुद्दे