我编写了一个从文件系统读取以确定状态的服务,并保持该状态一段时间,而不是不断更新文件系统。因此,该服务只有一个实例至关重要。现在,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...
,对我来说,这表明有两个实例正在运行,并且有一个平衡器循环这两个实例。该模式似乎相当规则,例如不跳过其他服务。