在Flask(flask工厂)中使用apscheduler添加一个cron作业。

问题描述 投票:0回答:1

伙伴们,你们好。我想添加一个cron job来调用我的。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/.

好吧,我按照 烧瓶厂 办法,一切都被初始化在 启动.py,因此我决定在这里开始我的工作。我很确定这个函数能正常工作,因为我把它作为一个路由放到一个函数中并调用它。我想问题可能是由我的数据库引起的(? 这个函数只是对上面初始化的DB做了一个查询,之后如果查询返回了什么东西,就发一封邮件。你知道我的cron作业应该在哪里初始化吗?

init.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:
python-3.x flask cron flask-sqlalchemy apscheduler
1个回答
0
投票

我也在上网查问题答案。还没有得到解决,只是有些想法:问题的根源在于 '发生这种情况是因为当上下文(与app.app_context())结束时,数据就会丢失其中一个可能的解决方案是使用Redis作为外部上下文。存储

© www.soinside.com 2019 - 2024. All rights reserved.