2016-08-24 30 views
1

我們有一個python腳本,在用戶在Web表單中輸入一些數據後啓動。整個腳本需要10-20分鐘才能完成。如果用戶願意,用戶可以在技術上在10秒內啓動其中的10個。如果發生這種情況,我們將同時運行10個相同的Python腳本,並且由於腳本正在處理的各種事情而導致對方失敗。如何實現在單獨的python進程之間共享的隊列系統?

編寫一個總體排隊系統的方法是什麼,以便這些腳本知道彼此並等待排隊執行?我們是通常寫一個腳本的人,但需要爲Web表單配置這個不斷排隊系統......可悲的是,我們不是開發人員或具有這樣的背景。

我們也可以通過不同的方式來設計一般的解決方案。我們一起去了這個黑客行爲。我們從來沒有成立過程/服務經紀人/工作人員,但這可能有意義嗎?

人們通常如何做這些東西?

回答

2

歡迎來到散佈您的計算的狂野世界!

實現自己的排隊系統(甚至在Python中)可能會導致一個受傷的世界。一個非常流行的企業級和開源消息隊列應用程序是RabbitMQ。他們有一個great starter tutorial,講述了您可以開始配置它的方式及其使用示例。

另外還有一個名爲Celery的Python任務隊列庫,因此在引擎蓋下使用了RabbitMQ。它的重點和性能稍微小一點,但提供易用性和更快的啓動時間作爲折衷。有一件事情,它沒有權衡是RabbitMQs 一致性當你深入排隊和分佈式系統,你將學習是非常重要的。有入門文檔可以發現here

鏈接

+0

感謝您的信息馬特。我們的一個實習生讓我感到驚訝,並實施了[rqueue](https://devcenter.heroku.com/articles/python-rq)來解決這個問題。出於好奇,我甚至問過這個問題嗎?我會稍後檢查你的鏈接。 – Thisisstackoverflow

+0

你的問題下降了適量的關鍵字/麪包屑,以找出你想要的東西。不幸的是,「網頁上的東西需要幾分鐘時間並且是垃圾郵件」這個問題並不罕見;把排隊系統放在它後面,而「工人」是一個常見的解決方案。 – Matt

相關問題