我不清楚如何在同一个数据库上集成我的模型、使用烧瓶脚本和计划作业。Flask-apscheduler 似乎在幕后进行了一些工作,它会为您创建数据库。
当我运行python manage.py db init
它将创建一个带有 apscheduled_jobs 表的数据库。现在,如果我运行,python manage.py db migrate
我会收到错误消息:
sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: apscheduler_jobs.id [SQL: 'INSERT INTO apscheduler_jobs (id, next_run_time, job_state) VALUES (?, ?, ?)'] [parameters: ('job1', 1505317109.041658, <memory at 0x000001AD6754E288>)]
其次是:
apscheduler.jobstores.base.ConflictingIdError: 'Job identifier (job1) conflicts with an existing job'
我的项目布局类似于:
在intel\_init__.py
看起来像:
from flask import Flask
from flask_apscheduler import APScheduler
from .models import db
app = Flask(__name__)
app.config.from_object('config.Config')
db.init_app(app)
scheduler = APScheduler()
scheduler.init_app(app)
scheduler.start()
manage.py
from flask_script import Manager
from flask_migrate import Migrate, MigrateCommand
from intel_app import app, db
migrate = Migrate(app, db)
manager = Manager(app)
manager.add_command('db', MigrateCommand)
if __name__ == '__main__':
manager.run()
编辑:我schedule.start()
从模块移到intel\_init__.py
了run.py
,它只会工作一次,因为我停止了应用程序,然后再次重新启动应用程序,我得到了与上面相同的错误。