У меня есть простое приложение UWSGI, помещенное за LB со следующей конфигурацией .ini.
[увсги]
сокет=0.0.0.0:5071
chdir = источник/
wsgi-файл = uwsgi.py
процессы=2
темы = 1
протокол=http
плагины = питон
выход при перезагрузке = ложь
мастер = истина
# Очистка временных файлов
вакуум = правда
Когда все 2x1
потоки заняты, приложение продолжает служить входящие соединения, ставя их в очередь, ожидая освобождения потока.
Это в некотором роде нежелательное поведение в моем случае, так как я хотел бы, чтобы UWSGI возвращал код состояния 5xx, который позволит мне не перенасыщать ресурсы одного дистрибутива.
Код тестирования клиента
Прикрепление кода тестового клиента для приложения UWSGI
прокси = {
'http': 'http://локальный: 5071'
}
@резьбовой
защита f():
print('Отправка запроса')
ответ = запросы.получить('http://dummy.site',прокси=прокси)
print(str(response.status_code)+ response.text)
для я в диапазоне (5):
е()
Тест (1)
Добавление слушать = 2
в .ini и одновременное выполнение 3 запросов просто напечатает:
*** Очередь прослушивания uWSGI сокета "0.0.0.0:5071" (fd: 3) заполнена !!! (3/2) ***
в то время как третье соединение, кажется, все еще каким-то образом принимается, ставится в очередь и позже выполняется вместо 5хх
вылетает ошибка.
Тест (2)
Добавление слушать = 0
в .ini и запуская 5 запросов одновременно, просто выполнялись бы два запроса за раз. Полный вывод очереди больше не отображается. Каким-то образом запросы где-то все еще находятся в очереди и выполняются, когда потоки освобождаются.
Как я могу заблокировать входящие подключения к приложению UWSGI, когда все потоки заняты?