Celey 任务执行限速

January 26, 2024 作者: yijianhao 分类: python 浏览: 111 评论: 0

Celey 任务执行限速

  1. 限制并发任务数:

celery -A your_project worker -l info -c 10  # 限制同时执行的任务数为10

  1. 使用Rate Limits

@shared_task(bind=True, max_retries=None, rate_limit='5/m')  # 限制这个任务每分钟只能被调度执行5次。
def your_task(self, url):
    # ... ...
    pass
  1. 指数退避

如果任务失败重试,可以设置下一次重试的等待时间比上一次更长,backoff.expo函数用于生成指数退避序列,其中factorbase参数可以调整重试等待时间的增长速度。

@shared_task(bind=True, max_retries=None)
def fetch_url_with_retry(self, url):
    retry_delay = backoff.expo(factor=1e3, base=2)
    try:
        # 尝试请求服务器
        pass
    except SomeException as exc:
        # 指数退避策略增加重试时间
        raise self.retry(exc=exc, countdown=next(retry_delay))
  1. 使用队列优先级

@shared_task(bind=True, max_retries=None, rate_limit='5/m', queue='low_priority')
def task_retry(self, url):
    # 你的任务实现
    pass

#调度(1)

评论