2011-03-25 60 views
2

的API,我在一個產品的工作,需要爬行的API和計算,並返回結果。 我目前正在使用Django作爲產品。我詳細介紹了Celery和RabbitMQ的文檔和隊列。使用芹菜/ RabbitMQ的(隊列)擊中Django的請求/響應週期

我想實現的是:要求不同廠商的每一個API的 1.監控/管理。 2.多個消費者的多個隊列。 3.隊列中的實時重新排程。

這裏的主要問題是,在我們的整個週期中的主要耗時的過程是採取任何地方1秒20秒之間的API請求。使用芹菜/ RabbitMQ是一個好主意嗎?我不能使用具有確認功能的Rabbit隊列來發出API請求,並等待它在克服其他隊列隊列中等待的情況下排隊,沒有確認的隊列不會幫助跟蹤失敗的請求並重試它們是不可能的。 那麼,我將如何使用隊列來解決這個問題呢?

第二個用於監視我在這個http://www.rabbitmq.com/management.html一看,管理Ñ監控插件,但我不能找到一種方法來獲取有關這是在我的情況非常重要的隊列處理的郵件的信息。 有沒有什麼辦法可以得到這個RabbitMQ的信息。

我應該使用任何其他隊列一樣的ActiveMQ或ZeroMQ獲得專門更好地監測插件,以獲取有關從隊列處理的郵件信息。

回答

0

我已經使用Beanstalk一段時間了,並取得了巨大的成功。

服務器:https://github.com/kr/beanstalkd
客戶端庫:https://github.com/PeterScott/beanstalkc
Django的助手:https://github.com/jonasvp/django-beanstalkd
Django管理應用程序:https://github.com/humanfromearth/django-beanstalk

我認爲魔豆有很多的您正在尋找的選項。例如:
1.您可以設置TTR(運行時間)作業運行多長時間,然後將其釋放回隊列中
2.如果作業即將結束其TTR,您可以「觸摸「它來重置TTR倒計時
3. Beanstalk跟蹤服務器,管道和作業級別的統計數據。所以,你可以看到有多少作業處於活動狀態,延遲,總等

RabbitMQ的是非常強大,但它是一個沉重的重量。我發現Beanstalk更輕,更靈活,更易於使用。