2011-06-26 9 views

Odpowiedz

7

powinny prawdopodobnie zobaczysz the Heroku devcenter article dotyczące tego, jak informacje będą bardziej pomocne, oto małe podsumowanie:

Aby odpowiedzieć na pytanie timeout:

Cedar wspiera długo- odpowiedzi odpytywania i przesyłania strumieniowego. Twoja aplikacja ma początkowe 30-sekundowe okno, by odpowiadać pojedynczym bajtem z powrotem do klienta. Po wysłaniu każdego bajtu (otrzymanego od klienta lub wysłanego przez aplikację) resetowane jest rolowanie 55-sekundowego okna. Jeśli żadne dane nie zostaną wysłane podczas 55-sekundowego okna, twoje połączenie zostanie zakończone.

(. Oznacza to, że jeśli miał Cedar zamiast Aspen lub bambusa można wysłać bajt co trzydzieści sekund lub tak po prostu oszukać system to może działać.)

Aby odpowiedzieć na hamowni pytanie:

Dodatkowa współbieżność nie przynosi żadnej pomocy w przypadku przekroczenia limitu czasu żądania. Możesz obracać dyszami do maksimum, a nadal otrzymasz czas oczekiwania na żądanie, ponieważ jest to pojedyncze żądanie, które nie działa prawidłowo w odpowiednim czasie. Dodatkowe dynos zwiększają twoją współbieżność, a nie szybkość twoich żądań.

(Oznacza to, że nie przeszkadza dodając więcej hamowni).

Na request timeouts: Sprawdź swój kod do nieskończonych pętli, jeśli robisz coś wielkiego:

Jeśli tak , powinieneś przenieść to ciężkie unoszenie do zadania w tle, które może działać asynchronicznie z twojego żądania internetowego. Aby uzyskać szczegółowe informacje, patrz Queueing.

+0

Dzięki za sugestię. Jak wysłać bajt co 30 sekund, jeśli żądanie jest przetwarzane? – donald

+0

@donald To zależy od tego, co naprawdę robisz. Weźmy na przykład rekurencyjną sekwencję silni. Możemy stworzyć obiekt czasu (nazwijmy go 'timerem'). Otrzymujemy aktualny czas timera i dodajemy 25 do niego, przez 26 sekund przed czasem. Za każdym razem, gdy uruchamiamy funkcję obliczania silni, sprawdzamy, czy aktualny czas jest większy lub równy "timer". Jeśli tak, po prostu wyślij małą wiadomość do klienta (coś w stylu Still loading ...). Jest to bardzo prosty przykład i trudno powiedzieć, co będzie dla ciebie skuteczne, nie wiedząc, co dokładnie chcesz zrobić. – Arka

+0

Dziękuję. Mam prośbę o pomoc, chciałbym, żebyś mi pomógł: http://stackoverflow.com/questions/6486035/rails-3-return-large-amount-of-data-to-user-via-api – donald

Powiązane problemy