代码之家  ›  专栏  ›  技术社区  ›  Will

在两个python服务器之间发送消息

  •  2
  • Will  · 技术社区  · 15 年前

    我有两个服务器——一个是Django,另一个可能是用python编写的——一个是将“任务”放入数据库,另一个是处理这些任务。

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

    两个python服务器之间是否有任何直接的对话方式,或者任务处理器必须有Web挂钩或其他什么?

    我觉得应该有一个好方法来做这件事…

    3 回复  |  直到 15 年前
        1
  •  4
  •   nkrkv    15 年前

    关注消息代理 ActiveMQ , RabbitMQ , ZeroMQ . 它们旨在解决与您描述的类似的问题。

    我正在研究实时mmorpg,其中服务器部分用python编写,守护进程当前使用activemq和 STOMP 协议。

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

        2
  •  1
  •   Community CDub    8 年前

    simplexmlRpcServer。

    请看我的答案: Network programming in Python

    您还可以使用定期轮询(以防出现很多问题),但xmlrpcserver对于大多数工作来说都是可以的。

        3
  •  0
  •   extraneon    15 年前

    我倾向于使用投票。如果任务表不是那么大,那么它实际上不需要那么多开销。

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

    您可以使用soappy开始编写Web服务,或者只是扩展basehttpserver或类似的东西来接受来自django的消息(HTTP请求)。我确实觉得编程可能比它的价值更大,但同样,如果任务只是很少出现,它可能是最整洁的解决方案。

    但是,我会在一些受保护的环境中运行我的home build mini服务器;只有Django才能在那里执行HTTP请求,因为构建安全的Web服务器并不容易。

    编辑

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