【发布时间】:2021-02-27 12:01:24
【问题描述】:
给出以下最小示例:
# myproject.py
import time
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello():
time.sleep(5)
return 'hello'
if __name__ == '__main__':
app.run(host='0.0.0.0')
# wsgi.py
from myproject import app
if __name__ == '__main__':
app.run()
uwsgi --http-socket 0.0.0.0:8080 --workers 1 --listen 2 --module wsgi:app
我现在预计同时发送 3 个以上的请求(1 个在工作线程中进行,2 个在队列中)将导致只有 3 个被服务,而其他的被拒绝。
但是,情况似乎并非如此。像这样发送 10 个请求时
curl http://127.0.0.1:8080 & \
curl http://127.0.0.1:8080 & \
curl http://127.0.0.1:8080 & \
curl http://127.0.0.1:8080 & \
curl http://127.0.0.1:8080 & \
curl http://127.0.0.1:8080 & \
curl http://127.0.0.1:8080 & \
curl http://127.0.0.1:8080 & \
curl http://127.0.0.1:8080 & \
curl http://127.0.0.1:8080
所有的都成功地一个接一个地送达。为什么会这样?我是否误解/错误配置了什么?
(我使用的是 Ubuntu 20.04,以防这很重要。)
【问题讨论】:
-
作为参考,我刚刚创建了一个关于此的 GitHub 问题:github.com/unbit/uwsgi/issues/2250
标签: python request queue webserver uwsgi