芹菜工人之间共享的XMPP连接

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

来自Facebook Chat API文档:

最佳实践

  • 您的Facebook聊天集成应仅用于预期寿命较长的会话。 客户不应该快速打开和关闭。
  • 有没有办法在工作人员之间共享XMPP连接,所以每次我想发送消息时都不必重新连接? 或者,有没有更好的解决方案?


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

    如果一个长期运行的后台作业能够接收来自其他短命中进程的消息并将它们推送到XMPP套接字上,那该如何处理呢?

    链接地址: http://www.djcxy.com/p/57103.html

    上一篇: Shared XMPP connection between Celery workers

    下一篇: How to remove extensions from name when looking in a FOR loop