我有两台服务器 - 一台Django,另一台可能用Python编写 - 另一台是将“任务”放入数据库,另一台正在处理这些任务。在两台Python服务器之间发送消息
他们共享一个数据库,但我希望处理器能够快速响应新任务,而不是定期轮询。
是否有任何直接的方式让两个Python服务器彼此交谈,或者任务处理器是否必须具有Web钩子或什么?
感觉,就必须有这样做一个幸福的方式......
我有两台服务器 - 一台Django,另一台可能用Python编写 - 另一台是将“任务”放入数据库,另一台正在处理这些任务。在两台Python服务器之间发送消息
他们共享一个数据库,但我希望处理器能够快速响应新任务,而不是定期轮询。
是否有任何直接的方式让两个Python服务器彼此交谈,或者任务处理器是否必须具有Web钩子或什么?
感觉,就必须有这样做一个幸福的方式......
我倾向于使用轮询。如果任务表不是那么大,它并不涉及太多的开销。
否则,您可以实现Web服务或套接字类型的连接。
您可以使用SOAPpy开始编写Web服务的东西,或者只是扩展BaseHTTPServer或类似的东西来接受来自Django的消息(HTTP请求)。我确实认为这可能是更多的编程,而不是它的价值,但是如果这些任务不经常发生,那么它可能是最好的解决方案。
然而,我会在一些受保护的环境中运行我的家庭建立小型服务器;只有Django应该能够在那里执行HTTP请求,因为构建安全的Web服务器并不容易。
编辑
我只是想过Twisted。如果您决定不使用消息队列(some twisted examples)
SimpleXMLRPCServer。
见我的答案在这里:Network programming in Python
您也可以使用定期轮询(如果得到的东西很多),但xmlrpcserver应该大部分工作的罚款。