Tôi có một ứng dụng UWSGI đơn giản được đặt phía sau LB với cấu hình .ini sau
[uwsgi]
ổ cắm=0.0.0.0:5071
chdir = src/
tệp wsgi = uwsgi.py
quy trình = 2
chủ đề = 1
giao thức=http
plugin=trăn
thoát khi tải lại = false
chủ = đúng
# Dọn dẹp các tập tin tạm thời
chân không = đúng
Khi tất cả 2x1
chủ đề đang bận, ứng dụng tiếp tục phục vụ các kết nối đến bằng cách xếp hàng đợi chúng, đợi một luồng rảnh rỗi.
Đây là một hành vi không mong muốn trong trường hợp của tôi, vì tôi muốn UWSGI trả về mã trạng thái 5xx, mã này sẽ cho phép tôi không làm quá bão hòa các tài nguyên của một bản phân phối.
Mã kiểm tra máy khách
Đính kèm mã máy khách thử nghiệm cho ứng dụng UWSGI
đại diện = {
'http':'http://localhost:5071'
}
@threaded
chắc chắn f():
print('Đang gửi yêu cầu')
phản hồi = request.get('http://dummy.site',proxies=proxy)
print(str(response.status_code )+ response.text)
cho tôi trong phạm vi (5):
f()
Kiểm tra (1)
Thêm nghe = 2
thành .ini và kích hoạt đồng thời 3 yêu cầu sẽ chỉ in:
*** hàng đợi nghe uWSGI của ổ cắm "0.0.0.0:5071" (fd: 3) đã đầy !!! (3/2) ***
trong khi kết nối thứ ba dường như vẫn được chấp nhận, xếp hàng và sau đó được thực thi thay vì một 5xx
lỗi bị ném.
Kiểm tra (2)
Thêm nghe = 0
thành .ini và kích hoạt đồng thời 5 yêu cầu sẽ chỉ thực hiện hai yêu cầu cùng một lúc. Đầu ra hàng đợi đầy đủ không hiển thị nữa. Bằng cách nào đó, các yêu cầu ở đâu đó vẫn được xếp hàng đợi và được thực hiện khi các luồng được giải phóng.
Làm cách nào tôi có thể chặn các kết nối đến ứng dụng UWSGI khi tất cả các chuỗi đang bận?