Celery 工作人员之间共享 XMPP 连接

发布于 2024-12-25 06:51:01 字数 424 浏览 2 评论 0原文

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

来自 Facebook Chat API 文档

最佳实践

  • 您的 Facebook Chat 集成只能用于预期长期存在的会话。客户不应快速流失。

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

My web app needs to be able to send XMPP messages (Facebook Chat), and I thought Celery might be a good solution for this. A task would consist of querying the database and sending the XMPP message to a number of users. However, with that approach I would have to connect to the XMPP server every time I run a task, which is not a great idea.

From the Facebook Chat API docs:

Best Practices

  • Your Facebook Chat integration should only be used for sessions that are expected to be long-lived. Clients should not rapidly churn on and off.

Is there a way to share an XMPP connection between workers so I don't have to reconnect every time I want to send a message? Or, is there a better solution?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

丿*梦醉红颜 2025-01-01 06:51:01

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

You can create a connection globally in your celery task module and use it from your tasks to send messages. In that case the connection will be established at start-up and will be shared between worker processes.

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()
烂柯人 2025-01-01 06:51:01

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

How about a long-running background job whose job it would be to receive messages from other short-lived processes and push them onto an XMPP socket?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文