2012-01-05 21 views
7

Web uygulamamın XMPP iletileri (Facebook Chat) gönderebilmesi gerekir ve bunun için Kereverin bunun için iyi bir çözüm olabileceğini düşündüm. Bir görev, veritabanını sorgulama ve XMPP mesajını bir çok kullanıcıya göndermekten oluşacaktır. Bununla birlikte, bu yaklaşımla, bir görevi her çalıştırdığımda XMPP sunucusuna bağlanmak zorunda kaldım, ki bu harika bir fikir değil. Facebook Chat API docs itibarenKereviz işçileri arasında paylaşılan XMPP bağlantısı

:

En İyi Uygulamalar Facebook Sohbet entegrasyonu sadece uzun ömürlü olması beklenmektedir oturumları için kullanılmalıdır

  • . Müşteriler hızlı bir şekilde açılmamalı ve kapatılmamalıdır.

Ben bir mesaj göndermek istediğiniz her zaman yeniden bağlanmaya gerek kalmaz işçiler arasında bir XMPP bağlantısını paylaşmak için bir yol var mı? Ya da daha iyi bir çözüm var mı?

cevap

4

Genel olarak, kereviz görev modülünüzde bir bağlantı oluşturabilir ve iletileri göndermek için görevlerinizden kullanabilirsiniz. Bu durumda, başlangıçta bağlantı kurulacak ve işçi süreçleri arasında paylaşılacaktır.

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

Evet, işte bu benim için bir fikir. Teşekkürler. –

0

İşi, diğer kısa ömürlü işlemlerden iletileri almak ve bir XMPP yuvasına itmek olan uzun süren bir arka plan işi ne dersin?