2011-06-13 52 views
0

我想實現一些代碼,通過服務的API從另一個服務導入用戶的數據。我要設置它的方式是將所有請求作業保存在一個隊列中,我的簡單導入程序將從中抽取。一次處理一個任務不會超出計算機的任何資源,所以我想知道構建一個程序以同時運行多個「作業」的標準方式是什麼?我應該考慮線程還是可能將程序從隊列中拉出並啓動導入程序實例的程序?謝謝您的幫助。運行儘可能多的程序實例

編輯:我現在所擁有的是Python,儘管如果需要的話我可以用其他語言重寫它。

+0

哪種語言? – 2011-06-13 20:29:35

+0

我現在所擁有的是python,儘管如果它有所作爲,我會樂於將它轉移到其他東西上。 – blcArmadillo 2011-06-13 20:38:40

+0

什麼是瓶頸?這真的是一個CPU綁定的問題? – 2011-06-13 20:48:00

回答

1

使用Producer-Consumer queue,儘可能多的消費者線程來優化主機上的資源使用情況(對不起 - 這是非常模糊的建議,但「正確的數字」是依賴於問題的)。

如果請求是輕量級的,您可能只需要一個生產者線程來處理它們。

啓動多個進程也可以工作 - 最佳選擇取決於您的要求。你是否需要製片人知道這個行動是否奏效,還是它是「即忘即忘」?發生故障時是否需要重試邏輯?你如何在這個模型中保持併發消費者的數量?等等。

對於Python,請看this

+0

感謝Steve的回覆。不用擔心,我並不期待確切數量的線程等。我正在處理的是一項Web服務,因此我的計劃是讓我的服務將作業添加到Amazon的SQS(簡單隊列服務)中。然後,我會讓我的導入程序在SQS的服務器上運行。我確實需要確保工作成功。那麼你是否認爲我應該運行該程序的一個實例,並讓它從隊列中輪詢作業,並對每個作業啓動一個威脅,直到達到一定數量的線程? – blcArmadillo 2011-06-13 20:44:11

+0

如果您需要嚴格控制消費者,我認爲線程將比單獨的過程更容易。真的,它畢竟只是兩種線程類型。這是相對簡單的處理。 Java和C#都有可用於連接生產者和消費者的內建隊列。 – 2011-06-13 20:47:22

+0

好的。謝謝您的幫助。我會研究線程。 – blcArmadillo 2011-06-13 20:49:31

相關問題