【问题标题】:Shared XMPP connection between Celery workersCelery 工作人员之间共享 XMPP 连接
【发布时间】:2012-02-03 17:20:27
【问题描述】:

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

来自Facebook Chat API docs

最佳做法

  • 您的 Facebook 聊天集成应仅用于预计会长期存在的会话。客户不应该快速地转来转去。

有没有办法在工作人员之间共享 XMPP 连接,这样我就不必每次想发送消息时都重新连接?或者,有没有更好的解决方案?

【问题讨论】:

    标签: python django xmpp celery facebook-chat


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      您可以在 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()
      

      【讨论】:

      • 是的,这就是我想要的主意。谢谢。
      猜你喜欢
      • 1970-01-01
      • 2020-11-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-23
      • 2019-07-02
      • 2019-04-22
      • 2017-03-02
      相关资源
      最近更新 更多