गनिकोर्न और फ्लास्क 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
कॉल प्रतिक्रिया निकाय के रूप में भेजा जाएगा।
app.run() को कॉल करने और Gunicorn का उपयोग कर फ्लास्क एप्लिकेशन को कॉल करने के बीच क्या अंतर है? – neel
'app.run()' ऐप को फ्लास्क के निर्मित wsgi सर्वर के साथ चलाएगा, जो विकास के उद्देश्य के लिए है और उच्च लोड के तहत खराब प्रदर्शन करता है। जबकि बंदूकधारी को प्रदर्शन – wong2
गनिकोर्न पायथन_फाइल के लिए अत्यधिक अनुकूलित किया गया है: ऐप आपके आवेदन को लोड करने के लिए बंदूकधारक को बताएगा। इसका क्या मतलब है? क्या आप इसे थोड़ा और समझा सकते हैं? – neel