python - 在 Web 应用程序中禁用副本服务
问题描述
我编写了一个从文件系统读取以确定状态的服务,并保持该状态一段时间,而不是不断更新文件系统。因此,该服务只有一个实例至关重要。现在,Web Apps 似乎默认实例化了 Flask 服务的两个实例。
这是记录在案的事情,还是我理解某些配置错误?它们实际上是复制品还是其他机制?最重要的是,如何禁用此功能?
我的应用工厂:
from flask import Flask
def create():
app = Flask(__name__)
d = {'t': 0}
@app.route('/', methods=['GET'])
def main():
d['t'] += 1
return 'Calls: %d' % d['t'], 200
return app
并且web.config
:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<appSettings>
<add key="PYTHONPATH" value="D:\home\site\wwwroot" />
<add key="WSGI_HANDLER" value="app.create()" />
<add key="WSGI_LOG" value="D:\home\site\wwwroot\wsgi.log" />
</appSettings>
<system.webServer>
<handlers>
<add name="PythonHandler" path="*" verb="*" modules="FastCgiModule"
scriptProcessor="D:\home\python364x64\python.exe|D:\home\python364x64\wfastcgi.py"
resourceType="Unspecified" requireAccess="Script"/>
</handlers>
</system.webServer>
</configuration>
启动后,这些调用返回一个序列1, 1, 2, 2, 3, 3...
,对我来说,这表明有两个实例正在运行,并且有一个平衡器循环这两个实例。该模式似乎相当规则,例如不跳过其他服务。
解决方案
如果我的理解正确,每个 Azure WebApp 都有一个关联的“scm”服务站点,它运行 Kudu 和其他站点扩展。
此外,如 GitHub 页面中所述,您可以选择对用户站点和 scm 站点或其他站点使用相同的过程。
WEBSITE_DISABLE_SCM_SEPARATION=true - 启用分离时(默认),主站点和 scm 站点在不同的沙箱中运行。一些结果行为:
• 通过分离,当您停止站点时,scm 站点仍在运行,您可以继续使用 git 和 msdeploy。• 通过分离,Main 和 scm 站点各有自己的本地文件。因此,您不会从 Kudu 控制台看到主站点的临时文件。注意:关闭分离被认为是不再完全支持的传统模式。有关更多详细信息,请参阅文档
请让我知道这是您要查找的内容还是其他内容。
推荐阅读
- r - 在 R 中查找与表嵌套结构表的交集
- graphql - Prisma Schema 中的多态性 - 最佳实践?
- wordpress - 在 Wordpress 自定义帖子类型上添加多条件搜索引擎
- java - PSQLException:发送到后端时发生 I/O 错误。...引起:java.io.EOFException
- javascript - 引导导航栏中的活动链接名称不会改变颜色
- shell - 如何在shell脚本中调用字符串作为变量?
- python - 在 pandas 中使用 Apply 函数
- spring-boot - 可能是什么原因,我的 SimpleCacheCustomizer 在我的测试启动时没有被调用
- python - Pydoc 忽略 opencv 函数,只考虑使用 def 关键字定义的 python 函数
- mysql - 在表(MYSQL)的特定列中查找“坏词”的最佳方法是什么?