我有n(通常是n < 10,但它應該縮放)在不同機器上運行的進程,並使用RabbitMQ通過amqp進行通信。進程通常是長時間運行的,可以用任何語言實現(儘管大部分是java/python)。蟒蛇中的數據流計算
每個進程都需要多個輸入(數字/字符串)並生成多個輸出(也只是數字或字符串)。執行進程異步發生:在其輸入隊列上發送消息並等待輸出隊列觸發回調。
理想情況下,用戶指定某些輸入和所希望的輸出和系統應:
- 檢測需要哪些過程和生成依賴圖
- 拓撲排序的圖形,並執行它,節點轉換將需要事件驅動
如果節點的輸入已準備就緒,則允許節點觸發每個分支的並行性。現在我可以假設沒有周期,但最終會有周期(例如,兩個過程可能需要迭代,直到輸出不再變化)。
這應該是(數據)流程編程(discussed here before)中的一個已知問題,我想避免重新發明車輪。我更喜歡python解決方案,搜索導致Trellis和Pypes。網格不再開發,但似乎支持週期,而pype不支持。也不知道如何積極開發pypes。
更多搜索reveal a whole list of event based programming frameworks,其中沒有一個我特別瞭解。當然有工作流程環境,如Taverna和KNIME,但似乎矯枉過正。
有沒有人有處理這類問題的經驗或提到的庫?
編輯:我發現其他庫是:
那你到底選擇? – elviejo79 2016-04-19 01:23:18
我最終只是在rabbitmq – dgorissen 2016-04-21 09:10:46
上滾動了自己的薄層......也許在不久的將來Dataflow/beam將是python的一個很好的解決方案。 http://stackoverflow.com/questions/35264441/what-is-apache-beam – elviejo79 2016-04-21 12:45:52