We’re now serving assets from S3 when running on PaaS. So we’ll set
the appropriate caching headers there or in Cloudfront. This means that
the app no longer needs to serve cache headers, which is what we were
using WhiteNoise for.
This commits removes WhiteNoise in favour of letting Flask handle the
serving of static assets.
This is what Gunicorn is looking for when it’s running the app.
Renaming this variable to `app` has caused the app to break once
deployed on PaaS.
This commit also renames `app` to `flask_app` to make it clear which
app is wrapping which other app.
Since we version our asset filenames there’s no need for a browser to
ever fetch the same file twice. It should always cache fetch from its
own cache.
The accepted way to effect this behaviour is using the expires header,
which is what this argument to `WhiteNoise` does.
We're now running our app as a wsgi app locally, so don't need to
distinguish between the two processes by having wsgi and application.py
whitenoise just serves static files nicely - we don't lose anything
by doing that locally.
flask-script has been deprecated by the internal flask.cli module, but
making this carries a few changes with it
* you should add FLASK_APP=application.py and FLASK_DEBUG=1 to your
environment.sh.
* instead of using `python app.py runserver`, now you must run
`flask run -p 6012`. The -p command is important - the port must be
set before the config is loaded, so that it can live reload nicely.
(https://github.com/pallets/flask/issues/2113#issuecomment-268014481)
* find available commands by just running `flask`.
* run them using flask. eg `flask list_routes`
* define new tasks by giving them the decorator
`@app.cli.command('task-name')`. Task name isn't needed if it's just
the same as the function name. Alternatively, if app isn't available
in the current scope, you can invoke the decorator directly, as seen
in app/commands.py