2012-08-04 3 views
2

Heroku 플랫폼에 대해 잘 이해하면 HTTP 요청을 처리 할 수있는 응용 프로그램 당 하나의 dyno 만 허용됩니다. Java 응용 프로그램 내에서의 목표는 페이스 북 서버에서 정보를 얻고 그에 따라 처리하는 주기적 프로세스를 1 ~ 2 회 실행하는 것입니다. 백그라운드 작업자 dyno가 웹 요청을 처리 할 수없는 경우 웹 dyno에서 reoccurring 프로세스를 작성하려면 어떻게해야합니까?웹 요청을하는 Heroku Java 응용 프로그램에서 주기적 프로세스를 실행하는 방법

+0

왜 그 작업을 수행하고 Heroku 스케줄러 추가 기능을 사용하여 하루에 한 번씩 실행하는 독립 실행 형 프로그램을 작성하지 않습니까? – Qsario

+0

나는이 같은 접근법을 조사하고 있었지만 웹 라우팅에서 같은 문제가 발생했습니다. 스케줄러는 본질적으로 주기적으로 실행되는 일회성 프로세스이며 Heroku의 일회성 프로세스는 HTTP 트래픽을 수신 할 수 없습니다. [링크] (https://devcenter.heroku.com)에서 형성 dynos와 일회성 dynos 비교/articles/oneoff-admin-ps) –

+1

웹 요청을 수신하는 프로세스가 필요한 이유를 명확히 할 수 있습니까? 프로세스가 "Facebook 서버에서 정보 얻기"로되어 있다면 프로세스가 Facebook을 호출 할 것이고 그 반대의 방법이 아닌 것처럼 들립니다. 일회성 다이노로 완벽하게 가능합니다. –

답변

0

"핸들 HTTP 요청"은 송신 측이 아닌 연결의 수신 측을 나타냅니다. Heroku에서 응용 프로그램은 HTTP 요청을 시작/전송하거나 HTTP 이외의 다른 시스템에 연결하는 HTTP 연결 및 기타 많은 프로세스를 수신하는 단일 웹 프로세스 *를 가질 수 있습니다.

* 참고 : 원하는만큼 많은 Dynos를 할당하여 각 프로세스를 실행할 수 있습니다.

주기적으로 외부 서비스 (예 : Facebook)에 요청하는 프로세스를 실행하려면 Heroku Scheduler Add-on을 사용할 수 있습니다. 그런 다음 결과를 relational or NoSQL data-storage add-ons 중 하나에 저장하거나 CloudAMQP과 같은 메시징 추가 기능을 통해 다른 프로세스에 결과를 보낼 수 있습니다.

+0

알았어. 좋아. 내 유일한 질문은 Heroku 스케줄러 추가 기능을 실행할 수있는 시간 제한이 있습니까? 그것은 합리적인 시간을 허용하는 경우 괜찮을거야하지만 10-15 분 미만이면 응용 프로그램이 실제로 비늘 때 충분한 시간이되지 않을 수 있습니다. –

+0

시간 제한은 없지만 프로세스가 실행되는 동안 비용이 청구됩니다. –

0

플랫폼에서 제한적일 경우 왜 사용해야합니까?
이 작업을 수행 할 수있는 다른 플랫폼이 있습니다. OpenShift을 사용하여 클라우드에 Java 응용 프로그램을 쉽게 배포 한 다음 제한없이 Java API를 사용할 수 있습니다.
OpenShift도 Heroku와 같은 방법으로 자식을 사용하고 있습니다.
두 가지 모두 PaaS이므로 개념이 완전히 동일하므로 OpenShift를 사용해 보는 것이 쉽다는 생각이 듭니다.
그리고 Google App Engine에 이러한 제한 사항이 있는지 확인할 수도 있습니다.
특정 질문에 대해 도움을주지 못해 죄송합니다. 적어도 "한 명의 경쟁자"에게는 그러한 제한이 없다는 것을 알고 있습니다.

+0

이 제한 사항에 대한 해결 방법이없는 경우 다른 PaaS를 조사 할 가치가 있습니다. Heroku 외부에 다른 서버를 설치하여이 유지 관리 작업을 처리 할 수 ​​있습니까? (백그라운드 프로세스는 데이터베이스 내의 값만 업데이트합니다.) –

+0

@ Ryan Sasson -이 서버를 호스팅하고 배포를 처리 할 대상은 어디입니까? 너는 구름에서도 그것을 필요로하지 않을 것인가? –

관련 문제