我有一个 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()