Как настроить nginx + Unicorn, чтобы избежать ошибок тайм-аута?

У меня есть приложение Rails (v3.2.13, Ruby 2.0.0), работающее на nginx + Unicorn (Ubuntu 12.04). Все работает хорошо, кроме случаев, когда пользователь-администратор загружает пользователей (тысячи) через файл CVS. Проблема в том, что я установил тайм-аут на 30 секунд, а процесс импорта занимает гораздо больше времени. Итак, через 30 секунд я получаю страницу nginx 502 Bad Gateway (рабочий Unicorn убит).

Очевидное решение - увеличить время ожидания, но я не хочу этого, потому что это вызовет другие проблемы (я полагаю), потому что это не типичное поведение.

Есть ли способ справиться с такого рода проблемами?

Заранее большое спасибо.

PS: может быть, решение заключается в изменении кода. Если это так, я хочу, чтобы пользователь не выполнял другой запрос.

Некоторые идеи (не знаю, если это возможно):

Настройте работника, посвященного этому запросу.Отправьте Unicorn сигнал «в процессе», чтобы не быть убитым.

Nginx-app.conf

upstream xxx {
  server unix:/tmp/xxx.socket fail_timeout=0;
}


server {
  listen   80; 

  ...

  location / {

    proxy_pass  http://xxx;
    proxy_redirect     off;
    ...

    proxy_connect_timeout      360;
    proxy_send_timeout         360;
    proxy_read_timeout         360;
  }
}

unicorn.rb

worker_processes 2

listen "/tmp/xxx.socket"

timeout 30

pid "/tmp/unicorn.xxx.pid"

Ответы на вопрос(2)

Ваш ответ на вопрос