2016-03-07 9 views
5

फ्लास्क करने का अनुरोध करता है क्या कोई Flaskinternally पर अनुरोध को आगे बढ़ाने की प्रक्रिया का वर्णन कर सकता है?कैसे गनिकोर्न आगे

यह अच्छा होगा अगर कोई व्यक्ति प्रक्रिया में शामिल प्रत्येक चरण को ग्रीनिकॉर्न द्वारा फ्लास्क और रिवर्स तरीके से अग्रेषित करने के अनुरोध से प्राप्त करता है।

कृपया यह ध्यान में रखते हुए ध्यान रखें कि मैं इस क्षेत्र में एक नौसिखिया हूं।

उत्तर

9

गनिकोर्न और फ्लास्क WSGI के माध्यम से वार्तालाप करता है, जिसमें दो पक्ष हैं: सर्वर की ओर और एप्लिकेशन पक्ष।

def application(environ, start_response): 
    start_response('200 OK', [('Content-Type', 'text/plain')]) 
    return ['Hello World'] 

सर्वर इस आवेदन फोन और पर्यावरण के बारे में जानकारी तथा उसे कॉलबैक फ़ंक्शन जो शुरू से संकेत मिलता है प्रयोग किया जाता है प्रदान करेगा:

आवेदन (ढांचा) की ओर

, हम सबसे सरल उदाहरण एक प्रतिदेय प्रदान करने की आवश्यकता एक प्रतिक्रिया का। जब सर्वर को प्रतिक्रिया मिलती है, तो यह ब्राउज़र पर वापस आ जाएगी।

हां, तो gunicorn और कुप्पी के लिए:

from flask import Flask 
app = Flask(__name__) 

जब आप ऐसा करते हैं, आप वास्तव में एक WSGI संगत आवेदन मिल गया है, app एक प्रतिदेय है:

class Flask(object): 
    ... 

    def __call__(self, environ, start_response): 
     """Shortcut for :attr:`wsgi_app`.""" 
     return self.wsgi_app(environ, start_response) 

[source](https://github.com/mitsuhiko/flask/blob/master/flask/app.py#L1976) 

और जब आप gunicorn app:app चलाने , आप अपने आवेदन को लोड करने के लिए बंदूकधारक कह रहे हैं, source

जब कोई अनुरोध आता है, तो बंदूकधारी इसे पार करती है, एक नियम environ, जो here परिभाषित किया गया है, शामिल हैं REQUEST_METHOD, QUERY_STRING आदि की तरह जानकारी है, तो आवेदन इसके साथ (एक फ्लास्क वस्तु!) फोन: app(environ, start_repsonse)source, start_repsonse Gunicorn में एक कॉलबैक प्रतिक्रिया की स्थिति और हेडर, और की वापसी मूल्य प्राप्त करने के लिए है app कॉल प्रतिक्रिया निकाय के रूप में भेजा जाएगा।

+0

app.run() को कॉल करने और Gunicorn का उपयोग कर फ्लास्क एप्लिकेशन को कॉल करने के बीच क्या अंतर है? – neel

+0

'app.run()' ऐप को फ्लास्क के निर्मित wsgi सर्वर के साथ चलाएगा, जो विकास के उद्देश्य के लिए है और उच्च लोड के तहत खराब प्रदर्शन करता है। जबकि बंदूकधारी को प्रदर्शन – wong2

+0

गनिकोर्न पायथन_फाइल के लिए अत्यधिक अनुकूलित किया गया है: ऐप आपके आवेदन को लोड करने के लिए बंदूकधारक को बताएगा। इसका क्या मतलब है? क्या आप इसे थोड़ा और समझा सकते हैं? – neel

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