2014-09-11 2 views
0

레일즈 서버를 호출하여 한 번에 하나씩 외부 API를 10 번 호출 한 다음 모든 작업이 완료되면 결과를 반환합니다.하나의 Rails 호출 중에 동시에 Ruby에서 작업을 실행할 수 있습니까?

그래서 x가 이러한 API 호출 중 하나가 발생하는 데 걸리면 요청에 10 배가 걸립니다.

하지만 모든 호출을 동시에 한 다음 모든 요청이 동시에 가장 느린 외부 API 호출에 대해서만 발생하도록 모든 스레딩 가능성이 있는지 궁금합니다.

저는 레일즈와 헤로 쿠를 사용하고 있으며 가능한 해결책에 대해 궁금합니다.

+0

https://devcenter.heroku.com/articles/rails-unicorn 당신은 빠른 더러운 솔루션이 필요합니다 : 여기 유니콘에 레일 응용 프로그램을 배포에 Heroku가 쓴 다른 기사가 https://devcenter.heroku.com/articles/deploying-rails-applications-with-the-puma-web-server

:

여기 푸마에 레일 응용 프로그램을 배포에 Heroku가 쓴 기사입니다 또는 새로운 접근법? (답변에서 자세히 설명 드리겠습니다) – dseminara

+0

async_sinatra https://github.com/raggi/async_sinatra와 같은 프레임 워크를 사용하여 제안 할 수 있습니다. 현재 답변을 게시하지 않은 이유입니다.)하지만 node.js와 비슷한 완전히 새로운 접근 방식을 사용하면이 종류의 것들을 더 쉽게 만들 수 있습니다 – dseminara

+0

@spitfire, 내 대답이 당신의 질문에 대답 했습니까? –

답변

1

동시 요청을 작성하려면 https://github.com/typhoeus/typhoeus을 확인하십시오. Readme에 따르면 : "Typhoeus는 핸들링 로직을 깔끔하게 캡슐화하면서 HTTP 요청을 병렬로 실행합니다."

동시 요청 인 경우 Puma와 같은 멀티 스레드 웹 서버 또는 Unicorn과 같은 다중 프로세스 웹 서버를 사용하는 것이 좋습니다. ,

+0

+1 타이포 우스 (Typhoeus)와 히드라 (Hydra)가 동반되어있어 매우 잘 테스트 된 솔루션입니다. –

관련 문제