阻止IIS上的Flask应用程序的多个实例

阻止IIS上的Flask应用程序的多个实例,flask,iis,Flask,Iis,我们开发了一个Flask webapp,并希望在IIS上部署它。在开发过程中,我们通过flask run启动了应用程序,这将创建我们应用程序的单个实例。然而,在IIS上,我们观察到(通过任务管理器)我们的应用程序同时运行多个实例 问题是我们的应用程序不是设计为并行运行的。例如,我们的应用程序从文件系统读取一个文件,并将其保存在内存中以提高效率。只有在保证没有其他进程更改文件内容的情况下,此优化才是正确的 有没有办法防止IIS启动多个实例?您可以使用以下代码只运行程序的一个实例: from ten

我们开发了一个Flask webapp,并希望在IIS上部署它。在开发过程中,我们通过
flask run
启动了应用程序,这将创建我们应用程序的单个实例。然而,在IIS上,我们观察到(通过任务管理器)我们的应用程序同时运行多个实例

问题是我们的应用程序不是设计为并行运行的。例如,我们的应用程序从文件系统读取一个文件,并将其保存在内存中以提高效率。只有在保证没有其他进程更改文件内容的情况下,此优化才是正确的


有没有办法防止IIS启动多个实例?

您可以使用以下代码只运行程序的一个实例:

from tendo import singleton
me = singleton.SingleInstance() # will sys.exit(-1) if other instance is running
要安装的命令:

pip install tendo
参考链接:


在IIS中,您可以转到FastCGI设置,在那里您可以看到服务器上网站使用的所有应用程序。在“Max.Instances”列中,您所讨论的脚本可能设置为0(或大于1的某个值),这意味着它可以多次启动。将此限制为1将解决您的问题。

您是如何在IIS上托管Python应用程序的?如果您使用HttpPlatformHandler,它会设置ˋprocessesPerApplicationˋ以仅运行Flask应用程序的单个实例,