2012-04-02 5 views
1

저는 프로젝트를 위해 Twisted를 사용하기로 결정했으며 다른 컴퓨터의 클라이언트에 데이터를 보낼 수있는 서버를 개발했습니다. 현재는 속도 요구 사항을 테스트하기 위해 더미 데이터를 사용하고 있지만 이제는 다른 전송 (예 : 블루투스)을 통해 다양한 외부 장치에서 실시간 데이터 (500Hz)를 기본적으로 수집하는 다른 Python DAQ 응용 프로그램에 Twisted 인터페이스를해야합니다. (참고 : DAQ (데이터 수집) 응용 프로그램은 Twisted 서버와 동일한 컴퓨터에 있음)Twisted with other applications

DAQ 응용 프로그램은 Twisted 프레임 워크의 일부가 아니기 때문에 가장 효율적이고 빠른, 최소한의 대기 시간이 무엇인지 궁금합니다.) 방법을 사용하여 데이터를 Twisted 서버로 전달합니다. 나는 가벼운 데이터베이스, Memcache, Queue 또는 Twisted 플러그인을 사용하는 것을 고려해 봤지만 어느 것이 가장 적합하고 가장 잘 맞는지 알기는 어렵다. Twisted를 사용하기로 결정하기 전에 DAQ 어플리케이션이 개발되었다고 덧붙여 야합니다. 그래서 Twisted 네트워크와는 별개로 생각했습니다.

시스템의 다른면에는 여러 컴퓨터에있는 클라이언트 측에도 비슷한 문제가 있습니다. 데이터 라인이 (나는 각각 약 100 바이트의 데이터 라인을 보내고있다.)이 데이터를 웹 애플리케이션을 위해이 데이터를 처리 할 다른 애플리케이션에 넘기고 싶다. (나는 이것을 위해 Twisted Web Service를 사용하는 것을 선호한다. 내 선택이 아니다!) 웹 애플리케이션이 자바로 작성되고있다. 다시 한번 위의 선택을 고려했지만 Twisted를 처음 접했을 때 나는 어느 것이 가장 좋은 방법인지 모르겠습니다. (참고 : 웹 응용 프로그램은 Twisted 클라이언트와 동일한 컴퓨터에 있습니다.)

모든 조언이나 생각은 크게 감사하겠습니다.

+0

"DAQ"란 무엇입니까? – Glyph

+0

DAQ은 데이터 수집을 의미합니다. – Bohmian

답변

1

내 제안은 build a simple protocol with twisted's built-in support for AMP으로; implementations of AMP in other languages 중 하나를 사용하여 다른 언어 나 프레임 워크에 연결할 수 있습니다. AMP는 키/값 쌍으로 정렬 된 길이가 접두사가 붙은 문자열이있는 소켓이기 때문에 구현하기가 쉽도록 설계되었습니다.

+0

감사합니다. 그러나 나는 당신을 속일지도 모릅니다. 데이터 수집 (DAQ) 애플리케이션은 Twisted 서버와 동일한 박스에 있고 웹 애플리케이션 (Java)은 클라이언트와 동일한 박스에 있습니다. 나는 AMP가 네트웍 콜을 가로 질렀다 고 생각했지만, 틀릴 수도있다. (localhost 루프에서 사용할 수있을 것이다.) 명확하지 않은 것에 대한 사과. 이 방법으로 Amp를 사용할 수 있다면 훌륭한 솔루션이 될 것입니다. – Bohmian

+0

이것에 대해 더 읽었다면 로컬 IPC에 AMP를 사용할 수 있지만 가능한 경우 TCP 이외의 전송을 사용하는 것이 가장 좋습니다. 다시 한번 감사드립니다. – Bohmian

+1

TCP는 사용하기 쉽고 다른 어떤 제품보다 사용하기 쉽습니다. 유닉스 소켓은 파일 시스템이 당신을 위해 컨트롤을 제어 할 수 있기 때문에 약간의 보안상의 이점이있을 수 있지만 그렇지 않으면 TCP와 아무런 차이가 없다. –

0

분명히 이것에 관해 할 수있는 여러 가지 방법이 있지만 처음에는 대기열을 사용하여 Twisted 서버로 데이터를 전달합니다. 많은 오픈 소스 대기열 도구 (예 : RabbitMQ, ZeroMQ, OpenMQ 및 기타로드) 중 하나를 배포하는 경우, HTTP와 같은 일반적인 것을 사용하여 DAQ 제품에서 작성한 다음 HTTP를 사용하여 Twisted 서버로 읽을 수 있어야합니다. HTTP가 마음에 들지 않는다면 선택할 대안 전송이 많이있을 것입니다. 사용하려는 것을 식별 한 다음이를 대기열 도구 선택의 기초로 사용하십시오.

이렇게하면 전체 솔루션의 영향을 최소화하면서 이러한 제품을 업그레이드하거나 변경할 수있어 매우 유연한 솔루션을 제공하게됩니다.

+0

내가 처음 언급 한 세 가지 옵션을 살펴 보았지만 실제로 ZeroMQ를 좋아하지만 여러 가지 이유 때문에 내가 실행중인 응용 프로그램의 수를 제한하려고합니다. 내 높은 데이터 처리량은 HTTP (아마도 웹 소켓을 사용할 수 있음)에 적합하지 않을 수 있습니다.AMP와 PB는 내장 솔루션을 제공하므로 두 가지를 살펴보고 있습니다. 당신의 제안에 감사드립니다. 감사. – Bohmian