2012-01-05 30 views
7

我的网络应用程序需要能够发送XMPP消息(Facebook聊天),我认为芹菜可能是一个很好的解决方案。一项任务将包括查询数据库并将XMPP消息发送给多个用户。但是,通过这种方法,我每次运行任务时都必须连接到XMPP服务器,这不是一个好主意。芹菜工人之间的共享XMPP连接

Facebook Chat API docs

最佳实践

  • 您的Facebook聊天的整合应该只用于那些有望成为长期会话。客户不应该快速打开和关闭。

是否有共享的工人之间的XMPP连接,所以我不必重新连接我想发送一条消息,每次的方法吗?或者,有没有更好的解决方案?

回答

4

您可以在celery任务模块中全局创建一个连接,并在任务中使用它来发送消息。在这种情况下,连接将在启动时建立,并将在工作进程之间共享。

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

是的,这是我的目标。谢谢。 – 2012-02-09 19:39:33

0

如果一个长时间运行的后台作业将接收来自其他短命进程的消息并将其推送到XMPP套接字上,那么它的工作如何?