2010-04-20 66 views
1

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

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

是否有任何直接的方式让两个Python服务器彼此交谈,或者任务处理器是否必须具有Web钩子或什么?

感觉,就必须有这样做一个幸福的方式......

回答

5

目光投向信息经纪人像ActiveMQRabbitMQZeroMQ这可能是您的服务器完美的网络的一部分。他们的目的是解决类似于你所描述什么问题。

我工作的实时MMORPG用Python编写的,我们的守护进程目前正在排队使用ActiveMQ的与STOMP协议任务彼此服务器部分。

在低级别的消息经纪人保持套接字连接到消费者,使它比定期轮询更有效率

0

我倾向于使用轮询。如果任务表不是那么大,它并不涉及太多的开销。

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

您可以使用SOAPpy开始编写Web服务的东西,或者只是扩展BaseHTTPServer或类似的东西来接受来自Django的消息(HTTP请求)。我确实认为这可能是更多的编程,而不是它的价值,但是如果这些任务不经常发生,那么它可能是最好的解决方案。

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

编辑

我只是想过Twisted。如果您决定不使用消息队列(some twisted examples)

1

SimpleXMLRPCServer。

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

您也可以使用定期轮询(如果得到的东西很多),但xmlrpcserver应该大部分工作的罚款。

相关问题