【发布时间】:2020-06-03 11:32:08
【问题描述】:
朋友们。我正在尝试添加一个 cron 作业来定期调用我的 cron_job_notes_recall 函数,但 Flask 给出了一个错误:
No application found. Either work inside a view function or push an application context. See http://flask-sqlalchemy.pocoo.org/contexts/.
好的,我遵循 Flask Factory 方法,并且所有内容都在 init.py 中初始化,因此我决定从这里开始我的工作。我很确定该函数可以正常工作,因为我将它作为路由放入函数并调用它。我想问题可能是由我的数据库(?)引起的。该函数只是对上面初始化的 DB 进行查询,然后如果查询返回某些内容,则发送电子邮件。您知道我的 cron 作业应该在哪里初始化吗?
初始化.py
# Globally accessible libraries
db = SQLAlchemy()
login_manager = LoginManager()
sched = BlockingScheduler()
def create_app(test_config=False):
"""Initialize the core application."""
logging.basicConfig(format='%(asctime)s - %(message)s', level=logging.INFO)
app = Flask(__name__, instance_relative_config=False)
if not test_config:
app.config.from_object('config.Config')
pprint(app.__dict__)
else:
app.config.from_object('config.TestConfig')
app.config.update(
BCRYPT_LOG_ROUNDS=4,
HASH_ROUNDS=1,
LOGIN_DISABLED=True,
WTF_CSRF_ENABLED=False,
SECRET_KEY=os.urandom(25),
TESTING=True
)
db.init_app(app)
login_manager.init_app(app)
with app.app_context():
# Include our Routes
from flask_bootstrap import Bootstrap
from . import routes
from . import auth
# Register Blueprints
app.register_blueprint(auth.auth_bp)
Bootstrap(app)
db.create_all()
# HERE IS MY CRON JOB
sched.add_job(cron_job_notes_recall, 'interval', seconds=1)
sched.start()
try:
return app, logging
except:
【问题讨论】:
-
但是
cron_job_notes_recall函数定义在哪里? -
在前面几行导入的模块 routes.py 中-“from .import routes”
标签: python-3.x flask cron flask-sqlalchemy apscheduler