我有一个部署在单个AWS EC2实例上的Flask应用程序。在我的__init__.py文件中,我实例化了一个BackgroundScheduler,其作业计划每隔1小时运行一次。 这是我的__init__.py代码的一个例子:
application = Flask(__name__)
app = application
scheduler = BackgroundScheduler()
run_my_jobs = scheduler.add_job(my_job, 'interval', hours=1)
scheduler.start()
我认为由于实例化是在Flask上下文之外完成的,并且在EC2上只运行一个单一实例,因此我的调度程序只应实例化一次,无论有多少用户连接到我的Flask应用程序一天。
过去几个月的情况一般如此,但最近几天我注意到调度程序每小时执行工作几乎2-3次。虽然我一直在继续将代码推送到生产环境,但是__init__.py文件保持不变,所以我对导致调度程序多次实例化的可能原因感到困惑?
答案 0 :(得分:0)
通常有两种方法可以实现:
if __name__ == '__main__':
块保护它根据你的描述,我认为#1不是这样,所以我会选择#2。