2013-03-08 6 views
0

상태 유지 :다른 응용 프로그램에 파이썬 메시지

저는 두 개의 파이썬 응용 프로그램 (프론트 엔드 서버 및 데이터 수집기, 데이터베이스는 '그들 사이에 있습니다')이 있습니다.

현재 데이터베이스로 redis를 사용하고 새 데이터를 사용할 수 있는지 프론트 엔드에 알리기 위해 publish/subscribe 프로토콜을 사용합니다.

하지만 다른 데이터베이스를 사용하고 싶을 수도 있습니다. (물론 술집/서브 시스템의 경우에는 시스템에 다시 설정하지 않아도됩니다.)

데이터 수집기가 (beanstalkd 또는 redis와 같은 외부 메시지 대기열을 사용하지 않고) 새 데이터를 데이터베이스에 처리 한 경우 내 프런트 엔드에 알리는 간단한 대안이 있습니까?

+0

이들은 항상 같은 컴퓨터에 있습니까? 그렇다면 소켓을 사용할 수 있습니다. – aychedee

+0

현재 그들은 그렇지만 다른 컴퓨터에 배포 할 수있는 옵션이 필요합니다. – Beastcraft

+1

그러면 beanstalk은 매우 간단합니다. 백엔드에서 프론트 엔드를 알리기 위해 핑 (ping) 할 수있는 작은 웹 서비스를 설정하는 것이 beanstalk를 설치하는 것보다 더 복잡 할 수 있습니다. – aychedee

답변

1

: 가이드를 읽어

시작 INET 소켓 서버 컴퓨터간에 통신하기 위해 운영 체제에 내장 된 것이 없습니다. Beanstalk은 Python에서 매우 간단한 API를 가지고 있으며,이 유형의 것을 매우 성공적으로 사용했습니다.

try: 
    beanstalk = beanstalkc.Connection(host="my.host.com") 
    beanstalk.watch("update_queue") 
except: 
    print "Error connecting to beanstalk" 

while True: 
    job = beanstalk.reserve() 
    do_something_with_job(job) 

동일한 컴퓨터에서만 작업하는 경우 linux IPC를 읽으십시오. 프로세스 간의 소켓 연결은 매우 빠르며 오버 헤드가 거의 없습니다. 그들은 epoll 콜백을 이용할 때 비동기 프로그램의 일부가 될 수도 있습니다.

5

ZeroMQ는 좋은 옵션입니다. 좋은 파이썬 바인딩을 가지고 있으며, 같은 머신의 프로세스와 다른 머신의 프로세스 사이의 통신을 거의 동일하게 만든다. 나는 내 댓글에서 언급 한 바와 같이 당신이 (플라스크 응용 프로그램?) 웹 서비스를 설정하거나 자신을 쓰기보다는 한 후 네트워크를 통해 다른 것입니다 무언가를 원하는 경우, http://zguide.zeromq.org/page:all

관련 문제