簡體   English   中英

芹菜rate_limit影響多個任務

[英]Celery rate_limit affecting multiple tasks

我用rabbitmq和celery進行了設置,工人在4台機器上運行,每台機器有4個實例。 我定義了兩個任務函數,這些函數基本上調用了相同的后端函數,但是其中一個名為process_transaction ,未定義rate_limit,另一個名為slow_process_transaction ,其中rate_limit="6/m" 任務去上RabbitMQ的,不同的隊列slownormal

奇怪的是,兩個任務都執行了rate_limit。 如果我嘗試使用celery.control.rate_limit更改celery.control.rate_limit ,則使用process_transaction更改不會更改有效率,而使用slow_process_transaction名稱會更改兩者的有效率。

對什么地方有任何想法嗎?

通過閱讀存儲桶源代碼,我發現celery通過在完成任務后休眠時間增量來實現速率限制,因此,如果在同一工作人員中將具有不同速率限制的任務混合在一起,它們會相互影響。

分開工作人員解決了我的問題,但這不是最佳解決方案。

您可以通過在celeryd調用中使用節點名稱和命名參數來分隔工作進程。 例如,您具有“快速”和“慢速”節點,並且您希望它們使用並發分別為5和1的單獨隊列:

celeryd <other opts> -Q:fast fast_queue -c:fast 5 -Q:slow slow_queue -c:slow 1

暫無
暫無

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

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