我不清楚如何在同一个数据库中使用flask-script和预定作业来集成我的模型。 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
模块,它只会运行一次,因为它停止了应用,然后再次重启应用,我得到了同样的结果如上所述的错误。