【发布时间】:2021-11-24 18:06:58
【问题描述】:
我正在测试 Azure 中的 Flask API 应用程序是否可以处理并发请求。我认为这样做的明显方法是在一个简单的测试项目中添加更多实例,并测试快速调用端点是否会创建并发请求,但似乎每次处理一个请求。我的应用很简单:
from flask import Flask
import logging, sys
import time
app = Flask(__name__)
logger = logging.getLogger(__name__)
logger.setLevel(logging.INFO)
handler = logging.StreamHandler(stream=sys.stdout)
logger.addHandler(handler)
@app.route('/test', methods=['GET'])
def health_check():
logger.info('Test Start')
time.sleep(10)
logger.info('Test Complete')
return 'Completed'
然后我部署到 Azure WebApp 并将实例设置为 2。我通过打开两个 Edge 选项卡并同时发出请求进行了测试。我希望我的日志看起来像:
10:00 测试开始 10:00 测试开始 10:10 测试完成 10:10 测试完成
但登录 Azure 显示:
10:00 测试开始 10:10 测试完成 10:10 测试开始 10:20 测试完成
我认为增加实例基本上会创建应用程序的副本,Azure 会自动管理负载平衡,所以我认为第二个请求会意识到第一个请求阻塞并转到第二个实例?
【问题讨论】:
-
即使第一个实例在做io,第一个实例仍然可以服务请求。您需要更多请求才能正确测试。查看启用负载测试的工具,例如 JMeter 或使用您最喜欢的编程语言
标签: azure flask azure-web-app-service