可以通过在Flask应用程序中使用before_first_request装饰器来解决此问题。在这种情况下,可以定义自己的create_app工厂功能,用于创建Flask应用程序和APSchedulers实例。以下是一个示例:
from flask import Flask from apscheduler.schedulers.background import BackgroundScheduler
def create_app(): app = Flask(name)
scheduler = BackgroundScheduler()
scheduler.add_job(func=my_task, trigger='interval', seconds=60)
scheduler.start()
@app.before_first_request
def start_scheduler():
scheduler.start()
@app.route('/')
def index():
return 'Hello, world!'
return app
def my_task(): print('This task runs every 60 seconds')
if name == 'main': app = create_app() app.run()
在此示例中,在创建Flask应用程序后,创建BackgroundScheduler实例并将作业添加到调度程序中。然后,使用before_first_request装饰器将调度程序启动。在这种情况下,所有来自应用程序的请求将在调度程序启动后被处理。最后,要在主函数中运行create_app()函数并启动应用程序。