[英]Fair task processing order with Celery+Rabbitmq
我有一個為多個用戶服務的 Django 應用程序。 每個用戶都可以提交資源密集型任務(幾分鍾到幾小時)來執行。 我想根據資源的公平分配來執行任務。 后端使用 Celery 和 RabbitMQ 執行任務。
我進行了廣泛的研究,但無法為我的特定案例找到任何解決方案(或者無法將其拼湊在一起。)據我所知,沒有任何內置功能可以做這在 Celery 和 RabbitMQ 中。 是否可以使用自定義代碼來處理任務的執行順序? 這將允許根據用戶數據計算優先級並選擇接下來應該執行的任務。
AMPQ 隊列是 FIFO。 所以不可能從隊列中間抓取項目來執行。 想到的兩個解決方案是:
a.) 如另一篇文章所述,使用鎖來限制用戶的資源。
b.) 有 2 個隊列; 一個提交隊列和一個執行隊列。 提交隊列根據您選擇實施的任何算法使執行隊列充滿工作。 這可能會更復雜,但可能更符合您正在尋找的內容。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.