APScheduler在本地服务器上运行一个线程,在远程部署时运行两个线程

时间:2015-08-24 20:25:18

标签: heroku flask apscheduler

我有一个Flask网络服务器,它与POSTGREsql数据库交互,以从网站获取和插入数据。

我还有一个APScheduler后台调度程序任务,它定期检查数据库,查找具有某些属性的特定对象,例如创建后5分钟,列x超过10等,然后通过电子邮件发送该信息。

我现在遇到的问题是, 当在本地环境中运行时,只执行一个任务,并且它每隔(30)秒运行一次,就像我想要的那样。 但是,如果我在Heroku上部署它,两个相同的任务会在几毫秒之内执行,这会导致问题。

负责运行后台任务的代码就是这个。

app = Flask(__name__)
#app.debug = True
app.debug = False
app.config.from_pyfile('config.py')
db = models.db
db.init_app(app)
migrate = Migrate(app, db)


manager = Manager(app)
manager.add_command('db', MigrateCommand)
job_defaults = {
    'coalesce': False,
    'max_instances': 1
}
sched = BackgroundScheduler(job_defaults=job_defaults)
sched.start()


@sched.scheduled_job('interval', seconds=30)
def my_job():
    with app.app_context():
        my_class = OutageCheck(db)
        my_class.checkOutage()

1 个答案:

答案 0 :(得分:0)

它可以是一个重载程序,它在远程服务器上运行2个flask实例。 你可以试试这个

app.run(debug=True, use_reloader=False)

咨询此问题How to stop Flask from initialising twice in Debug Mode?