Celey 任务执行限速
Celey 任务执行限速
限制并发任务数:
celery -A your_project worker -l info -c 10 # 限制同时执行的任务数为10
使用Rate Limits
@shared_task(bind=True, max_retries=None, rate_limit='5/m') # 限制这个任务每分钟只能被调度执行5次。
def your_task(self, url):
# ... ...
pass
指数退避
如果任务失败重试,可以设置下一次重试的等待时间比上一次更长,backoff.expo
函数用于生成指数退避序列,其中factor
和base
参数可以调整重试等待时间的增长速度。
@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))
使用队列优先级
@shared_task(bind=True, max_retries=None, rate_limit='5/m', queue='low_priority')
def task_retry(self, url):
# 你的任务实现
pass
#调度(1)评论