मुझे अपना अपाचे सर्वर सेटअप मिला है और यह mod_wsgi के माध्यम से फ्लास्क प्रतिक्रियाओं को संभाला जा रहा है। मैं अन्य नाम के माध्यम WSGI स्क्रिप्ट पंजीकृत कर लिया है:मैं अपाचे और mod_wsgi के साथ फ्लास्क मार्गों का उपयोग कैसे करूं?
[httpd.conf]
WSGIScriptAlias /service "/mnt/www/wsgi-scripts/service.wsgi"
मैं ऊपर पथ पर इसी WSGI फ़ाइल जोड़ी है:
[/ MNT/www/WSGI-scripts/service.wsgi]
import sys
sys.path.insert(0, "/mnt/www/wsgi-scripts")
from service import application
और मैं एक साधारण परीक्षण बोतल Python स्क्रिप्ट है जो सेवा मॉड्यूल प्रदान करता है:
[/mnt/www/wsgi-scripts/service.py]
from flask import Flask
app = Flask(__name__)
@app.route('/')
def application(environ, start_response):
status = '200 OK'
output = "Hello World!"
response_headers = [('Content-type', 'text/plain'),
('Content-Length', str(len(output)))]
start_response(status, response_headers)
return [output]
@app.route('/upload')
def upload(environ, start_response):
output = "Uploading"
status = '200 OK'
response_headers = [('Content-type', 'text/plain'),
('Content-Length', str(len(output)))]
start_response(status, response_headers)
return [output]
if __name__ == '__main__':
app.run()
जब मैं अपने वेबसाइट यूआरएल [होस्ट नाम]/सेवा यह काम करता है की उम्मीद है और मैं के रूप में करने के लिए जाना "नमस्ते दुनिया!" वापस। समस्या यह है कि मुझे नहीं पता कि उपरोक्त उदाहरण में 'अपलोड' जैसे काम करने के लिए अन्य मार्ग कैसे प्राप्त करें। यह स्टैंडअलोन फ्लास्क में ठीक काम करता है लेकिन mod_wsgi के तहत मैं स्टंप हो गया हूं। एकमात्र चीज जिसे मैं कल्पना कर सकता हूं, मैं प्रत्येक एंडपॉइंट के लिए httpd.conf में एक अलग WSGI स्क्रिप्ट उपनाम पंजीकृत कर रहा हूं, लेकिन यह फ्लास्क के फैंसी रूटिंग समर्थन को दूर ले जाता है। क्या यह काम करने का कोई तरीका है?
आप '/ सेवा/upload' के लिए ब्राउज़ करने की कोशिश की है? आपको सुखद आश्चर्य हो सकता है। –
जब मैं अनुरोध/सेवा/अनुरोध अपलोड करता हूं तब भी 'एप्लिकेशन' फ़ंक्शन पर भेजा जाता है। वास्तव में, मैं एप्लिकेशन फ़ंक्शन से पहले रूट स्टेटमेंट को हटा सकता हूं और यह अभी भी काम करता है। यह एप्लिकेशन की प्रविष्टि बिंदु के रूप में हमेशा mod_wsgi द्वारा एप्लिकेशन का उपयोग किया जा रहा है। ऐसा लगता है कि मुझे 'एप्लिकेशन' के अंदर कुछ करने की ज़रूरत है जो फ्लास्क के रूटिंग तर्क को बंद कर देता है। –