2017-09-22 108 views
0

我有一個關於服務總線隊列機制的問題。我必須設置docker容器來運行不同的python腳本。每個腳本執行一個特定的圖像分析過程。其中一些是聚集的。 現在我問題是:具有優先級的Azure服務總線隊列AND處理Docker容器以處理隊列消息

1)Python腳本必須讀取隊列中的消息。如果2個容器試圖從同一隊列中拉取消息,應該沒有衝突。 有沒有任何指導,我可以按照最佳實踐設置這樣的場景? 我還不確定如何將這些單獨的腳本集羣到一個映像上,但我正在使用.yml撰寫文件來處理這個集羣。

2)除此之外,必須有一個優先隊列。我的消息必須在C#代碼中優先設置,我的python需要處理這些消息。而且我需要一個複雜的邏輯來控制相同優先級的消息,即使有高優先級請求的峯值,也有可能處理其他消息。

希望這是明確的。有人可以指導我嗎?提前致謝。

+0

我會開始看着pypi上的azure模塊提供的api。您的所有工作容器都將在隊列中偵聽要處理的工作消息。我會編寫處理這些消息的代碼,根據消息的格式完成某些事情。因爲看起來工人可以完成不同的任務。這將使您能夠爲您的所有工作容器擁有相同的圖像。 – Kyle

+0

@凱爾謝謝你的回答。但事情是我正在考慮爲進程設置不同的隊列,但每個進程都會有例如2個碼頭工人在同一隊列中進行監聽。你可以對這個API有一點特別的,我沒有找到更多的細節。我很抱歉,我還有2個問題。你有什麼建議優先?通常我們把CMD放在dockerfile的最後運行.py如果我在同一圖像下有更多的.py,我想在啓動每個不同的docker容器時運行一個特定的腳本。任何建議? – sss

回答

0

根據我的理解和根據我的經驗,對於您的場景,我認爲最佳做法是僅對這些具有優先級屬性的消息使用Service Bus Queue,並創建應用程序以接收這些消息以將相關任務添加到在Azure批處理服務上處理不同優先級的Python作業,不使用不同的優先級隊列並在Docker容器上處理Python作業。

您可以參考Python的Azure Batch Service的官方document知道它,批處理作業具有滿足您需求的優先級屬性(請從here搜索關鍵字priority)。

希望它有幫助。