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.