A failsafe for the Flask reloader.
The Flask reloader works great until you make a syntax error and it fails importing your app. This extension helps keep you working smoothly by catching errors during the initialization of your app, and provides a failsafe fallback app to display those startup errors instead.
To use it, run your app via a small script script with a factory function to initialize your app:
from flask_failsafe import failsafe
@failsafe
def create_app():
# note that the import is *inside* this function so that we can catch
# errors that happen at import time
from myapp import app
return app
if __name__ == "__main__":
create_app().run()
The @failsafe decorator catches any errors calling create_app() and
returns a fallback app that will instead display the Flask error debugger.
If you use Flask-Script, you can pass
the same @failsafe-decorated factory function to the Manager() class:
from flask.ext.script import Manager, Server
from flask_failsafe import failsafe
@failsafe
def create_app():
from myapp import app
return app
manager = Manager(create_app)
manager.add_command("runserver", Server())
if __name__ == "__main__":
manager.run()