2012-01-05 4 views
7

웹 응용 프로그램에서 XMPP 메시지 (Facebook Chat)를 보낼 수 있어야하고 Celery가이 문제에 대한 좋은 해결책 일 수 있다고 생각했습니다. 작업은 데이터베이스를 쿼리하고 XMPP 메시지를 여러 사용자에게 보내는 작업으로 구성됩니다. 그러나이 방법을 사용하면 작업을 실행할 때마다 XMPP 서버에 연결해야하는데 이는 그리 좋은 방법이 아닙니다. Facebook Chat API docs에서셀러리 작업자 간의 공유 XMPP 연결

:

모범 사례 페이스 북 채팅 통합 만 수명이 긴 것으로 예상된다 세션에 사용되어야한다

  • . 클라이언트는 빠르게 켜고 꺼야합니다.

내가 메시지를 보낼 때마다 다시 연결하지 않아도 근로자 사이의 XMPP 연결을 공유 할 수있는 방법이 있습니까? 아니면, 더 좋은 해결책이 있습니까?

답변

4

셀로 지 태스크 모듈에서 전역으로 연결을 작성하고 태스크에서이를 사용하여 메시지를 보낼 수 있습니다. 이 경우 시작시 연결이 설정되고 작업자 프로세스간에 연결이 공유됩니다.

import socket 
from celery.task import task 

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
s.connect(('localhost', 9999)) 

@task 
def echo(arg): 
    s.send(arg) 
    return s.recv() 
+0

예, 이것이 제가 생각한 것입니다. 감사. –

0

짧은 수명을 가진 다른 프로세스의 메시지를 받아서 XMPP 소켓으로 밀어 넣는 것이 장기간 백그라운드 작업입니까?