【问题标题】:Sending messages between two Python servers在两个 Python 服务器之间发送消息
【发布时间】:2011-02-10 02:10:48
【问题描述】:

我有两台服务器 - 一台 Django,另一台可能是用 Python 编写的 - 一台正在将“任务”放入数据库,另一台正在处理这些任务。

它们共享一个数据库,但我希望处理器能够快速响应新任务,而不是定期轮询。

两个 Python 服务器之间是否有任何直接的方法可以相互通信,或者任务处理器是否必须具有 web-hook 或其他东西?

感觉应该有一种幸运的方式来做到这一点......

【问题讨论】:

    标签: python django ipc message-queue


    【解决方案1】:

    我倾向于使用轮询。如果任务表不是那么大,它实际上不会涉及那么多开销。

    否则,您可以实现 Web 服务或套接字类型的连接。

    您可以使用 SOAPpy 开始编写 Web 服务内容,或者只是扩展 BaseHTTPServer 或类似的东西来接受来自 Django 的消息(HTTP 请求)。我确实觉得这可能比它的价值更多的编程,但话又说回来,如果任务只是不经常出现,它可能是最巧妙的解决方案。

    然而,我会在一些受保护的环境中运行我的家庭构建迷你服务器;只有 Django 应该能够在那里进行 HTTP 请求,因为构建安全的 Web 服务器并不容易。

    编辑

    我只是想到了Twisted。如果您决定不使用消息队列,这可能是您服务器的完美网络部分 (some twisted examples)

    【讨论】:

      【解决方案2】:

      SimpleXMLRPCServer。

      在这里查看我的答案:Network programming in Python

      您也可以使用定期轮询(以防万一事情变得很多),但 xmlrpcserver 应该适用于大部分工作。

      【讨论】:

        【解决方案3】:

        看看像ActiveMQRabbitMQZeroMQ 这样的消息代理。它们旨在解决类似于您所描述的问题。

        我正在开发实时 MMORPG,其中服务器部分是用 Python 编写的,我们的守护进程目前使用带有 STOMP 协议的 ActiveMQ 将任务相互排队。

        在低级消息代理上保持与消费者的套接字连接,因此它比定期轮询更有效。

        【讨论】:

          猜你喜欢
          • 2020-10-30
          • 2022-11-13
          • 2014-06-11
          • 1970-01-01
          • 2022-11-29
          • 1970-01-01
          • 2023-03-28
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多