그래서 장기 실행 Ruby 프로세스가 있는데, 수행 할 작업 (이진 메시지가있는 EventMachine TCP 서버)에 따라 다양한 작업을 수행합니다. 이제는 특정 사람들에게 웹 인터페이스를 통해 주어진 프로세스를 모니터, 변경, 종료 할 수있는 기능을 제공하고자합니다. 나는 그것에 대해 Sinatra.rb을 사용하려고 계획하고 있지만 더 나은 대안을 공개하고 있습니다."외부에서"Ruby 응용 프로그램을 제어하는 연습
내 원래 아이디어는 Thread
안에 Sinatra 웹 인터페이스 (Sinatra에 익숙하지 않은 사용자는 Rack을 기반으로 함)를 실행하여 백그라운드에서 실행하도록하는 것이 었습니다.
그러나, 나는 그런 식으로 할 경우 성능에 영향을 줄 수 있습니다 생각했다, 그래서 나는 루비 (resque, 메모리 공유, named pipes 등)에 대한 IPC 능력과 다른 구현을 조사하기로 결정했다.
나는 resque (그리고 그 이름은 정말로 재치가있다.)의 아이디어를 정말 좋아했지만, 그것이 내가 필요로하는 것이지, 그것이 과잉 일지 모른다는 것을 완전히 확신하지는 못했다. 실제로 Sinatra 및 EventMachine을 사용하여 구현하는 것이 가장 좋은 방법인지는 모르겠지만 (resque에 대한 전체 설명서를 읽지는 않았지만 예제를 신속하게 스캔하고 예제와 사용 사례를 읽었습니다.)
마음에 떠오른 또 다른 아이디어는 EventMachine::defer
안에 Sinatra를 사용하는 것이지만, 새로운 Thread
을 만드는 것과 본질적으로 같은가요?
내가 Fiber
의를 사용하여 심각한 일을 해본 적이없는, 그래서 자신의 전체 잠재력을 모르겠지만, 그들이 내 마음을 교차했다.
그래서 Ruby PCI에 가장 적합한 방법은 무엇입니까 (또는 더 좋습니다).
감사합니다.
이렇게 많은 질문이 있습니다. 더 구체적으로 프로토 타이핑을 해보십시오. 언급 된 대부분의 기술은 설치하기가 어렵지 않습니다. –
@BenjaminUdinktenCate 알아요.하지만 더 숙련 된 (또는 비슷한 문제가있는) 사람에게 가장 좋은 기술을 제안 해 줄 것을 요청할 것이라고 생각했습니다. – omninonsense