2012-01-05 13 views
7

Moja aplikacja internetowa musi być w stanie wysyłać wiadomości XMPP (Facebook Chat), i myślałem, że Seler może być dobrym rozwiązaniem. Zadanie polegałoby na wysłaniu zapytania do bazy danych i wysłaniu wiadomości XMPP do pewnej liczby użytkowników. Jednak przy takim podejściu musiałbym połączyć się z serwerem XMPP za każdym razem, gdy uruchomię zadanie, co nie jest świetnym pomysłem.Udostępnione połączenie XMPP między pracownikami selera

Z Facebook Chat API docs:

Best Practices

  • Twój Facebook Chat integracja powinny być wykorzystywane jedynie do sesji, które według przewidywań będą długowieczne. Klienci nie powinni błyskawicznie rezygnować z chodzenia.

Czy istnieje sposób, aby udostępnić połączenie XMPP pomiędzy pracownikami więc nie muszę się ponownie za każdym razem chcesz wysłać wiadomość? Czy istnieje lepsze rozwiązanie?

Odpowiedz

4

Możesz utworzyć połączenie globalne w swoim module zadań selera i używać go z zadań do wysyłania wiadomości. W takim przypadku połączenie zostanie nawiązane podczas rozruchu i będzie współdzielone między procesami roboczymi.

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

Tak, to jest pomysł, do którego zmierzam. Dzięki. –

0

Co powiecie na długotrwałe zadanie w tle, którego zadaniem byłoby odbierać wiadomości z innych krótkotrwałych procesów i przekazywać je do gniazda XMPP?

Powiązane problemy