2016-03-07 3 views
11

मेरे पास फ्लास्क में वेब एप्लिकेशन लिखा गया है। जैसा कि हर किसी के द्वारा सुझाया गया है, मैं उत्पादन में फ्लास्क का उपयोग नहीं कर सकता। तो मैंने फ्लास्क के साथ गनिकोर्न के बारे में सोचा।मल्टीथ्रेड मोड में ग्रीनिकॉर्न के साथ फ्लास्क कैसे चलाएं

फ्लास्क एप्लिकेशन में मैं कुछ मशीन लर्निंग मॉडल लोड कर रहा हूं। ये आकार 8 जीबी सामूहिक रूप से हैं। मेरे वेब एप्लिकेशन की सहमति 1000 अनुरोध तक जा सकती है। और मशीन की रैम 15 जीबी है।
तो इस एप्लिकेशन को चलाने का सबसे अच्छा तरीका क्या है?

उत्तर

20

आप गनिकॉर्न के साथ कई श्रमिकों या एसिंक श्रमिकों के साथ अपना ऐप शुरू कर सकते हैं।

बोतल gevent async कार्यकर्ता के साथ

from flask import Flask 
app = Flask(__name__) 

@app.route("/") 
def hello(): 
    return "Hello World!" 

if __name__ == "__main__": 
    app.run() 

server.py Gunicorn

gunicorn server:app -k gevent --worker-connections 1000 

Gunicorn 1 कार्यकर्ता 12 धागे:

:

gunicorn server:app -w 1 --threads 12 

Gunicorn 4 श्रमिकों (बहु) के साथ

gunicorn server:app -w 4 

इस पोस्ट में फ्लास्क समेकन पर अधिक जानकारी: How many concurrent requests does a single Flask process receive?

+1

कई श्रमिकों के साथ यह स्मृति अपवाद से बाहर फेंक रहा है क्योंकि मॉडल का आकार बड़ा है। मुझे लगता है कि प्रत्येक कार्यकर्ता के साथ यह अलग-अलग मेमोरी स्पेस में सभी मॉडलों को लोड करेगा – neel

+0

आपको एक कार्यकर्ता के साथ समेकन की अनुमति देने के लिए एसिंक कार्यकर्ता जैसे गींटेंट का उपयोग करने की आवश्यकता है: 'गनिकॉर्न -के गीवेंट - वर्कर-कनेक्शन 1000'। – molivier

+0

आप प्रत्येक कार्यकर्ता को निर्दिष्ट संख्याओं के साथ चलाने के लिए '--threads' भी जोड़ सकते हैं। संपादित देखें। – molivier

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