簡體   English   中英

Celery+Rabbitmq 的公平任務處理順序

[英]Fair task processing order with Celery+Rabbitmq

我有一個為多個用戶服務的 Django 應用程序。 每個用戶都可以提交資源密集型任務(幾分鍾到幾小時)來執行。 我想根據資源的公平分配來執行任務。 后端使用 Celery 和 RabbitMQ 執行任務。

我進行了廣泛的研究,但無法為我的特定案例找到任何解決方案(或者無法將其拼湊在一起。)據我所知,沒有任何內置功能可以做這在 Celery 和 RabbitMQ 中。 是否可以使用自定義代碼來處理任務的執行順序? 這將允許根據用戶數據計算優先級並選擇接下來應該執行的任務。

相關: Celery如何公平分配用戶的任務?

AMPQ 隊列是 FIFO。 所以不可能從隊列中間抓取項目來執行。 想到的兩個解決方案是:

a.) 如另一篇文章所述,使用鎖來限制用戶的資源。

b.) 有 2 個隊列; 一個提交隊列和一個執行隊列。 提交隊列根據您選擇實施的任何算法使執行隊列充滿工作。 這可能會更復雜,但可能更符合您正在尋找的內容。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM