2017-02-16 1 views
0

웹 서비스의 결과가 내보기에 나타나기 때문에 다음과 같이 작동 중 상태로 가져옵니다.컨트롤러의 동작을 통해 동일한 레일즈 애플리케이션의 링크로 이동하지 않습니다.

class MerchantsController < ApplicationController 
    def list 
    @cuisines = HTTParty.get('http://localhost:3000/v1/cuisines') 
    end 
end 

이 작업을 수행 할 때 : http://localhost:3000/merchants/list으로로드하는 데 시간이 너무 오래 걸리고 결국 Net::ReadTimeout 예외가 발생합니다. 그것에 대한 해결책이

class MerchantsController < ApplicationController 
    def list 
    @cuisines = HTTParty.get('http://bogoapi.herokuapp.com/v1/cuisines') 
    end 
end 

있습니까 :

은 내가 해당 인스턴스를 가리 때, 잘 작동 Heroku가 배포 같은 응용 프로그램이 있습니까? 그렇지 않다면 무엇이 이처럼 행동하게합니까?

답변

0

WEBrick - Rails의 기본 빌드 서버는 단일 스레드 서버입니다. Wiki. 한 번의 호출로 첫 번째 요청의 논리에서 다른 호출을합니다. 두 번째 요청은 첫 번째 요청이 완료 될 때까지 실행되지 않습니다.

heroku 인스턴스가 정상적으로 작동한다고 가정합니다. 멀티 스레드입니다. 하지만 대신 코드를 변경하는 것이 좋습니다. 예를 들어 별도의 서비스를 레일 엔진으로 전환 할 수 있습니다.

+0

먼저 레일 5를 사용하고 있으므로 Webrick은 기본적으로 Puma입니다. 두 번째로,이 시나리오에서는 heroku가 멀티 스레드인지 아닌지는 문제가되지 않습니다. 응용 프로그램 자체가 'localhost'에서 실행되기 때문입니다. – Farooq

관련 문제