簡體   English   中英

限速celery任務組

[英]rate limiting celery task group

目前我正在限制單個任務,但希望將所有這些限制在一起作為一個組。 我沒有在文檔中看到如何做到這一點。

CELERY_ANNOTATIONS = {"tasks.aws_install_cwagent": {"rate_limit":"2/s"},
                  "tasks.aws_create_parameters": {"rate_limit":"2/s"},
                  "tasks.aws_config_cwagent": {"rate_limit":"2/s"},
                  "tasks.aws_describe_alarms": {"rate_limit":"2/s"},
                  "tasks.aws_list_aliases": {"rate_limit":"2/s"},
                  "tasks.aws_list_keys": {"rate_limit":"2/s"},
                  "tasks.aws_describe_volumes": {"rate_limit":"2/s"},
                  "tasks.aws_describe_instances": {"rate_limit":"2/s"},
                  "tasks.aws_describe_target_groups": {"rate_limit":"2/s"},
                  "tasks.aws_describe_target_health": {"rate_limit":"2/s"},
                  "tasks.aws_describe_load_balancers": {"rate_limit":"2/s"},
                  "tasks.aws_get_platform": {"rate_limit":"2/s"},
                  "tasks.aws_write_log_message": {"rate_limit":"2/s"},
                  "tasks.aws_list_metrics": {"rate_limit":"2/s"},
                  "tasks.aws_put_metric_alarm": {"rate_limit":"2/s"}}

有沒有辦法將所有這些任務作為一個組進行速率限制? 那么例如 celery 是否允許以 10/s 的速度運行?

如何才能做到這一點?

不確定這是否可以使用 celery 配置選項來處理,但您可以手動執行此操作

AWS_TASKS = (
    "tasks.aws_install_cwagent",
    "tasks.aws_create_parameters",
)
AWS_COMMON_OPTIONS = {"rate_limit": "2/s"}
CELERY_ANNOTATIONS.update({task: AWS_COMMON_OPTIONS for task in AWS_TASKS})

更新

使用CELERY_ANNOTATIONS您還可以為每個任務 ( '*' ) 或滿足某個語句的每個任務設置設置。 以下是示例:

# for every task
CELERY_ANNOTATIONS = {'*': {'rate_limit': '2/s'}}
# custom statement, in this example - every task starts with 'tasks.aws'
class MyAnnotate:
    def annotate(self, task):
        if task.name.startswith('tasks.aws'):
            return {'rate_limit': '2/s'}

CELERY_ANNOTATIONS = (MyAnnotate(), {…})

文檔: https://docs.celeryproject.org/en/3.1/configuration.html#celery-annotations

暫無
暫無

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

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