2012-01-05 14 views
7

Mi aplicación web debe poder enviar mensajes XMPP (Facebook Chat), y creo que Aplery podría ser una buena solución para esto. Una tarea consistiría en consultar la base de datos y enviar el mensaje XMPP a varios usuarios. Sin embargo, con ese enfoque tendría que conectarme al servidor XMPP cada vez que ejecuto una tarea, lo cual no es una gran idea.Conexión XMPP compartida entre trabajadores de Apio

Desde el Facebook Chat API docs:

Buenas Prácticas

  • Su Facebook Chat en la integración sólo se debe utilizar para las sesiones que se espera que sean de larga duración. Los clientes no deben agitarse rápidamente.

¿Hay una manera de compartir una conexión XMPP entre los trabajadores por lo que no tiene que conectarse cada vez que quiera enviar un mensaje? O, ¿hay una mejor solución?

Respuesta

4

Puede crear una conexión global en su módulo de tareas de apio y usarlo desde sus tareas para enviar mensajes. En ese caso, la conexión se establecerá en la puesta en marcha y se compartirá entre los procesos de trabajo.

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

Sí, esta es la idea que estoy buscando. Gracias. –

0

¿Qué tal un trabajo en segundo plano de larga duración cuyo trabajo sería recibir mensajes de otros procesos efímeros e insertarlos en un socket XMPP?

Cuestiones relacionadas