Saltar al contenido

Frasco en la primera ejecución: no utilice el servidor de desarrollo en un entorno de producción

Solución:

El tutorial oficial analiza la implementación de una aplicación en producción. Una opción es utilizar Waitress, un servidor WSGI de producción. Otros servidores incluyen Gunicorn y uWSGI.

Cuando se ejecuta públicamente en lugar de en desarrollo, no debe utilizar el servidor de desarrollo integrado (flask run). El servidor de desarrollo lo proporciona Werkzeug por conveniencia, pero no está diseñado para ser particularmente eficiente, estable o seguro.

En su lugar, utilice un servidor WSGI de producción. Por ejemplo, para usar Waitress, primero instálelo en el entorno virtual:

$ pip install waitress

Debe informar a Waitress sobre su solicitud, pero no usa
FLASK_APP como hace flask run. Debe indicarle que importe y llamar a la fábrica de aplicaciones para obtener un objeto de aplicación.

$ waitress-serve --call 'flaskr:create_app'
Serving on http://0.0.0.0:8080

O puedes usar waitress.serve() en el código en lugar de utilizar el comando CLI.

from flask import Flask

app = Flask(__name__)

@app.route("https://foroayuda.es/")
def index():
    return "<h1>Hello!</h1>"

if __name__ == "__main__":
    from waitress import serve
    serve(app, host="0.0.0.0", port=8080)
$ python hello.py

A menos que le diga al servidor de desarrollo que se está ejecutando en modo de desarrollo, asumirá que lo está usando en producción y le advertirá que no lo haga. El servidor de desarrollo no está diseñado para su uso en producción. No está diseñado para ser particularmente eficiente, estable o seguro.

Habilite el modo de desarrollo configurando el FLASK_ENV variable de entorno a development.

$ export FLASK_APP=example
$ export FLASK_ENV=development
$ flask run

Si está ejecutando en PyCharm (o probablemente cualquier otro IDE), puede establecer variables de entorno en la configuración de ejecución.

El modo de desarrollo habilita el depurador y el cargador de forma predeterminada. Si no quieres estos, pasa --no-debugger o --no-reloader al run mando.


Sin embargo, esa advertencia es solo una advertencia, no es un error que impide que su aplicación se ejecute. Si su aplicación no funciona, hay algo más mal en su código.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *