Tengo la configuración de mi servidor Apache y está manejando las respuestas del Frasco a través de mod_wsgi. Me he registrado el guión WSGI a través del alias:¿Cómo utilizo las rutas de Flask con Apache y mod_wsgi?
[httpd.conf]
WSGIScriptAlias /service "/mnt/www/wsgi-scripts/service.wsgi"
He añadido el archivo WSGI correspondiente a la ruta anterior:
[/ mnt/www/WSGI-scripts/service.wsgi]
import sys
sys.path.insert(0, "/mnt/www/wsgi-scripts")
from service import application
Y tengo un script Python Frasco prueba sencilla que proporciona el módulo de servicio:
[/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()
Cuando voy a mi sitio web URL [nombre de host]/servicio funciona como se esperaba y me sale "Hello World!" espalda. El problema es que no sé cómo hacer funcionar otras rutas, como 'subir' en el ejemplo anterior. Esto funciona bien en Flask independiente, pero en mod_wsgi estoy perplejo. Lo único que puedo imaginar es registrar un alias de script de WSGI por separado en httpd.conf para cada punto final que quiero, pero eso quita el elegante soporte de enrutamiento de Flask. ¿Hay alguna manera de hacer que esto funcione?
¿Ha intentado navegar a '/ service/upload'? Usted puede estar gratamente sorprendido. –
Cuando pulso/servicio/carga, la solicitud se envía a la función 'aplicación'. De hecho, puedo eliminar la declaración de ruta antes de la función de la aplicación y todavía funciona. Es como si la aplicación siempre fuera utilizada por mod_wsgi como punto de entrada a la aplicación. Siento que tengo que hacer algo dentro de la 'aplicación' que inicia la lógica de enrutamiento de Flask. –