Am o aplicație UWSGI simplă pusă în spatele unui LB cu următoarea configurație .ini
[uwsgi]
socket=0.0.0.0:5071
chdir = src/
wsgi-file = uwsgi.py
procese=2
fire=1
protocol=http
plugins=python
exit-on-reload=fals
maestru=adevarat
# Curățarea fișierelor temporare
vid = adevărat
Când toate 2x1
firele sunt ocupate, aplicația continuă să servească conexiunile de intrare punându-le în coadă, așteptând eliberarea unui fir.
Acesta este cumva un comportament nedorit în cazul meu, deoarece aș dori ca UWSGI să returneze un cod de stare 5xx, care îmi va permite să nu suprasaturam resursele unei singure distribuții.
Cod de testare client
Atașarea codului client de testare pentru aplicația UWSGI
proxy = {
„http”: „http://localhost:5071”
}
@filetat
def f():
print('Se trimite cererea')
răspuns = requests.get('http://dummy.site',proxies=proxy)
print(str(response.status_code )+ response.text)
pentru i în intervalul (5):
f()
Test (1)
Adăugând asculta = 2
la .ini și lansarea a 3 solicitări simultan ar imprima doar:
*** coada de ascultare uWSGI a socketului „0.0.0.0:5071” (fd: 3) plină !!! (3/2) ***
în timp ce a treia conexiune pare să fie încă acceptată cumva, pusă în coadă și ulterior executată în loc de a 5xx
eroare fiind aruncată.
Test (2)
Adăugând asculta = 0
la .ini și lansarea a 5 solicitări simultan ar executa doar două solicitări simultan. Ieșirea completă a cozii nu se mai afișează. Într-un fel, solicitările sunt încă puse în coadă și executate când firele sunt eliberate.
Cum pot bloca conexiunile de intrare la aplicația UWSGI când toate firele sunt ocupate?