Пытаюсь установить таймаут для запросов в uWSGI, не уверен в правильности настройки. Кажется, что есть несколько вариантов тайм-аута (сокет, интерфейс и т. д.), и не совсем очевидно, какой параметр настроить или где его установить.
Поведение, которое я ищу, состоит в том, чтобы увеличить время, которое может занять запрос к уровню ресурсов приложения REST.
Ответ 1 · рейтинг 77 · Tombart
Вероятно, вы ищете параметр харакири - если запрос занимает больше времени, чем указанное время харакири (в секундах), запрос будет отброшен, а соответствующий рабочий процесс будет перезапущен.
Для автономного 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
...
Ответ 2 · рейтинг 22 · iurii
Настройка http-timeout сработала для меня. У меня есть http = :8080, поэтому я предполагаю, что если вы используете сокет файловой системы, вы должны использовать socket-timeout.