Тайм-аут запроса uWSGI в Python

Пытаюсь установить таймаут для запросов в uWSGI, не уверен в правильности настройки. Кажется, что есть несколько вариантов тайм-аута (сокет, интерфейс и т. д.), и не совсем очевидно, какой параметр настроить или где его установить.

Поведение, которое я ищу, состоит в том, чтобы увеличить время, которое может занять запрос к уровню ресурсов приложения REST.


person Juan Carlos Coto    schedule 09.06.2014    source источник


Ответы (3)


Вероятно, вы ищете параметр харакири — если запрос занимает больше времени, чем указанное время харакири (в секундах), запрос будет отброшен, а соответствующий рабочий процесс будет перезапущен.

Для автономного uwsgi (ini config):

[uwsgi]
http = 0.0.0.0:80
harakiri = 30
...

Если у вас есть прокси-сервер nginx до uwsgi, вам также необходимо увеличить время ожидания:

  location / {
    proxy_pass http://my_uwsgi_upstream;
    proxy_read_timeout 30s;
    proxy_send_timeout 30s;
  }

Если вам нужен (по какой-то странной причине) более высокий тайм-аут, чем 60 с, вы можете рассмотреть возможность связи по протоколу uwsgi. Конфигурация довольно похожа на сайт nginx:

location / {
    uwsgi_read_timeout 120s;
    uwsgi_send_timeout 120s;
    uwsgi_pass  my_upstream;
    include     uwsgi_params;
}

увсги:

[uwsgi]
socket = 0.0.0.0:80
protocol = uwsgi
harakiri = 120
...
person Tombart    schedule 29.08.2014
comment
Я использовал вариант протокола uwsgi, и он работает. Спасибо. - person lukik; 04.08.2015
comment
Некоторые запросы или операции могут легко занять больше 60 секунд. Почему это будет считаться странным? - person AlxVallejo; 05.06.2019
comment
Потому что большинство пользователей не захотят ждать ›60 секунд. И не пытайся объяснить, почему у тебя нет выбора, я знаю. - person Camusensei; 25.07.2019
comment
получаю ошибку NameError: name 'uwsgi' is not defined - person Harry Moreno; 20.10.2020
comment
оказывается, я добавлял это в файл для конфигурации systemd, а не в .ini для фляги - person Harry Moreno; 20.10.2020

Настройка http-timeout сработала для меня. У меня есть http = :8080, поэтому я предполагаю, что если вы используете сокет файловой системы, вы должны использовать socket-timeout.

person iurii    schedule 11.02.2015
comment
Я смог увеличить время ожидания, только используя параметр http-timeout в конфигурации uwsgi. Мне не нужно было --harakiri. (и мне также нужно было установить proxy_read_timeout и proxy_send_timeout в конфигурации nginx, как сказал @Tombart выше) - person nttaylor; 10.08.2017
comment
будут ли какие-либо проблемы, если я использовал оба? Я сталкиваюсь с stackoverflow.com/questions/67407446/ - person DJ_Stuffy_K; 05.05.2021
comment
В моем случае запуск uwsgi был также параметром --http-timeout. - person white_gecko; 07.05.2021

у меня сработало по комментарию #master=true и поставил это,lazy-apps=true

в файле uwsgi.ini

person Shahram    schedule 17.04.2021