【问题标题】:Prevent multiple instances of Flask app on IIS防止 IIS 上的 Flask 应用程序的多个实例
【发布时间】:2020-08-05 14:16:05
【问题描述】:

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

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

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

【问题讨论】:

标签: flask iis


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    from tendo import singleton
    me = singleton.SingleInstance() # will sys.exit(-1) if other instance is running
    

    要安装的命令:

    pip install tendo
    

    参考链接:

    Check to see if python script is running

    How to make only one instance of the same script running at any time

    https://github.com/pycontribs/tendo/blob/master/tendo/singleton.py

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-02-11
      • 2011-10-25
      • 1970-01-01
      • 2012-02-06
      • 1970-01-01
      • 2011-02-27
      • 2023-03-20
      • 2019-11-15
      相关资源
      最近更新 更多