我有兩臺服務器 - 一臺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應該大部分工作的罰款。