2009-09-20 94 views
2

我正在Python中構建一個類似於TwitPic的移動照片共享網站,並且一直在探索各種隊列來處理圖像處理。我研究過RabbitMQ和ActiveMQ,但我認爲我的使用案例有更好的解決方案。我正在尋找一些更輕量級的東西。我願意接受任何建議。哪個隊列最合適?

回答

2

你可以編寫一個使用python的內置multiprocessing庫和它的Queue的守護進程。

你所要做的就是建立一個工作人員池,讓他們等待來自隊列的工作。您的主流程可以將新作業轉儲到隊列中,並且您可以輕鬆前往。

+0

我同意,只要確保任務排序代碼不會被異常殺死,並停止整個過程 – Szundi 2009-09-20 01:54:55

+0

是的,包裝一切都嘗試:除了:block和** log **發生的任何異常,但允許該過程繼續。 – Fragsworth 2009-09-20 01:58:04

+0

他正在談論分佈式消息隊列。 – 2009-09-20 01:59:36

0

您正在考慮單機架構還是一羣機器?將映像轉發到同一臺計算機或不同計算機上的可用工作進程並無太大差別,特別是在使用TCP套接字的情況下。瞭解哪些工作人員可用,如果有必要,產生更多的資源並且有資源可用,如果工人崩潰等,具有故障安全機制,逐漸使問題更加複雜。

這可能與使用httplib將圖像推送到運行Apache或扭曲的私有服務器以及cgi應用程序集合一樣簡單。當您添加另一臺服務器時,請求將在其中循環。

1

Gearman很好,它可以選擇性地允許您同步在多個工作人員上執行的多個作業。

我在一些大量應用程序中成功使用beanstalkd

後者更適合異步作業,前者爲您提供更大的靈活性,當您想阻止作業執行時。