[Flask] Flask RuntimeError: Working outside of application context.
Arup Rakshit
ar at zeit.io
Wed Jun 12 16:31:29 EDT 2019
Hello All,
I have the following factory function.
from flask import Flask, jsonify
import os
import pprint
def create_app(test_config=None):
"""Create and configure an instance of the Flask application."""
app = Flask(__name__, instance_relative_config=True)
app.config.from_mapping(
# a default secret that should be overridden by instance config
SECRET_KEY="dev",
# store the database in the instance folder
DATABASE="awesome_recipes_dev",
)
if test_config is None:
# load the instance config, if it exists, when not testing
app.config.from_pyfile("config.py", silent=True)
else:
# load the test config if passed in
app.config.update(test_config)
# ensure the instance folder exists
try:
os.makedirs(app.instance_path)
except OSError:
pass
from app import db
db.init_app(app)
@app.shell_context_processor
def shell_context():
from app.models.recipe import Recipe
return {
"app": app,
"db": db.get_db(),
"pp": pprint.PrettyPrinter(indent=4).pprint,
"Recipe": Recipe,
}
@app.route("/")
def index():
return jsonify({"hello": "World"})
from .recipes.views import recipes_blueprint
app.register_blueprint(recipes_blueprint)
return app
Now when I run flask shell I get error:
Traceback (most recent call last):
File "/Users/aruprakshit/Code/flask/awesome_recipes/backend/venv/bin/flask", line 11, in <module>
sys.exit(main())
File "/Users/aruprakshit/Code/flask/awesome_recipes/backend/venv/lib/python3.7/site-packages/flask/cli.py", line 906, in main
cli.main(args=args, prog_name=name)
File "/Users/aruprakshit/Code/flask/awesome_recipes/backend/venv/lib/python3.7/site-packages/flask/cli.py", line 569, in main
return super(FlaskGroup, self).main(*args, **kwargs)
File "/Users/aruprakshit/Code/flask/awesome_recipes/backend/venv/lib/python3.7/site-packages/click/core.py", line 717, in main
rv = self.invoke(ctx)
File "/Users/aruprakshit/Code/flask/awesome_recipes/backend/venv/lib/python3.7/site-packages/click/core.py", line 1137, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
File "/Users/aruprakshit/Code/flask/awesome_recipes/backend/venv/lib/python3.7/site-packages/click/core.py", line 956, in invoke
return ctx.invoke(self.callback, **ctx.params)
File "/Users/aruprakshit/Code/flask/awesome_recipes/backend/venv/lib/python3.7/site-packages/click/core.py", line 555, in invoke
return callback(*args, **kwargs)
File "/Users/aruprakshit/Code/flask/awesome_recipes/backend/venv/lib/python3.7/site-packages/click/decorators.py", line 17, in new_func
return f(get_current_context(), *args, **kwargs)
File "/Users/aruprakshit/Code/flask/awesome_recipes/backend/venv/lib/python3.7/site-packages/flask/cli.py", line 418, in decorator
with __ctx.ensure_object(ScriptInfo).load_app().app_context():
File "/Users/aruprakshit/Code/flask/awesome_recipes/backend/venv/lib/python3.7/site-packages/flask/cli.py", line 381, in load_app
app = locate_app(self, import_name, name)
File "/Users/aruprakshit/Code/flask/awesome_recipes/backend/venv/lib/python3.7/site-packages/flask/cli.py", line 255, in locate_app
return find_best_app(script_info, module)
File "/Users/aruprakshit/Code/flask/awesome_recipes/backend/venv/lib/python3.7/site-packages/flask/cli.py", line 77, in find_best_app
app = call_factory(script_info, app_factory)
File "/Users/aruprakshit/Code/flask/awesome_recipes/backend/venv/lib/python3.7/site-packages/flask/cli.py", line 117, in call_factory
return app_factory()
File "/Users/aruprakshit/Code/flask/awesome_recipes/backend/app/__init__.py", line 49, in create_app
from .recipes.views import recipes_blueprint
File "/Users/aruprakshit/Code/flask/awesome_recipes/backend/app/recipes/views.py", line 3, in <module>
from ..models.recipe import Recipe
File "/Users/aruprakshit/Code/flask/awesome_recipes/backend/app/models/recipe.py", line 4, in <module>
class Recipe:
File "/Users/aruprakshit/Code/flask/awesome_recipes/backend/app/models/recipe.py", line 6, in Recipe
__db__ = get_db()
File "/Users/aruprakshit/Code/flask/awesome_recipes/backend/app/db.py", line 22, in get_db
if "db" not in g:
File "/Users/aruprakshit/Code/flask/awesome_recipes/backend/venv/lib/python3.7/site-packages/werkzeug/local.py", line 380, in <lambda>
__contains__ = lambda x, i: i in x._get_current_object()
File "/Users/aruprakshit/Code/flask/awesome_recipes/backend/venv/lib/python3.7/site-packages/werkzeug/local.py", line 307, in _get_current_object
return self.__local()
File "/Users/aruprakshit/Code/flask/awesome_recipes/backend/venv/lib/python3.7/site-packages/flask/globals.py", line 44, in _lookup_app_object
raise RuntimeError(_app_ctx_err_msg)
RuntimeError: Working outside of application context.
I am not able to figure out where I need to push the app context to make it work. Can anyone help me?
My code is https://gitlab.com/aruprakshit/flask_awesome_recipes/tree/master/app
Thanks,
Arup Rakshit
ar at zeit.io
More information about the Flask
mailing list