我有一个部署在单个AWS EC2实例上的Flask应用程序。在我的__init__.py文件中,我已经实例化了一个BackgroundScheduler,并且计划每隔1小时运行一次作业。 这里是我的__init__.py代码的例子:APScheduler在单个EC2实例上多次调用
application = Flask(__name__)
app = application
scheduler = BackgroundScheduler()
run_my_jobs = scheduler.add_job(my_job, 'interval', hours=1)
scheduler.start()
我会假设,因为实例化的瓶背景之外完成的,与运行在EC2上只有一个单一实例,我的调度应该只被实例化一次,无论有多少用户全天连接到我的Flask应用程序。
过去几个月的情况通常就是这样,但是最近在过去的几天里,我注意到调度器每小时一直在执行这个工作几乎2-3次。虽然我一直在继续推送代码到生产环境中,但__init__.py文件保持不变,所以我很困惑有什么可能的原因导致调度程序的多个实例化?
你是如何运行你的应用程序? – davidism
@davidism我把它放在应用程序模块中,当它被推送到AWS时,有一个application.py文件导入应用程序并调用application.run() – nicknaky
这不会解决您的问题,但不要使用内置在生产中的开发服务器。它不是为此设计的。 – davidism