Jak skonfigurować nginx + Unicorn, aby uniknąć błędów przekroczenia limitu czasu?

Mam aplikację Rails (v3.2.13, Ruby 2.0.0) działającą na nginx + Unicorn (Ubuntu 12.04). Wszystko działa dobrze, z wyjątkiem sytuacji, gdy użytkownik admin ładuje użytkowników (tysiące) za pomocą pliku CVS. Problem polega na tym, że ustawiłem limit czasu do 30 sekund, a proces importowania zajmuje znacznie więcej czasu. Tak więc po 30 sekundach otrzymuję stronę nginx 502 Bad Gateway (pracownik Unicorn zostaje zabity).

Oczywistym rozwiązaniem jest zwiększenie limitu czasu, ale nie chcę tego, ponieważ spowoduje to kolejne problemy (chyba), ponieważ nie jest to typowe zachowanie.

Czy istnieje sposób na rozwiązanie tego rodzaju problemów?

Z góry dziękuję.

PS: Może rozwiązaniem jest modyfikacja kodu. Jeśli tak, chcę uniknąć wykonywania przez użytkownika innego żądania.

Niektóre pomysły (nie wiem, jeśli to możliwe):

Skonfiguruj pracownika dedykowanego do tego żądania.Wyślij sygnał „praca w toku” do Unicorn, aby uniknąć śmierci.

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"

questionAnswers(2)

yourAnswerToTheQuestion