diff --git a/cads_broker/qos/QoS.py b/cads_broker/qos/QoS.py index daea2cd..55b789f 100644 --- a/cads_broker/qos/QoS.py +++ b/cads_broker/qos/QoS.py @@ -253,9 +253,10 @@ def user_limit(self, request): user = request.user_uid limits = self.per_user_limits.get(user, []) - if limits != []: - print(user, limits) - return limits + applied_limits = [] + for limit in limits: + if limit.match(request): + applied_limits.append(limit) for limit in self.rules.user_limits: if limit.match(request): @@ -263,10 +264,11 @@ def user_limit(self, request): We clone the rule because we need one instance per different user otherwise all users will share that limit """ - limit = limit.clone() - limits.append(limit) - self.per_user_limits[user] = limits - return limits + if limit.get_uid(request) not in [l.get_uid(request) for l in limits]: + limit = limit.clone() + applied_limits.append(limit) + self.per_user_limits[user] = self.per_user_limits.get(user, []) + [limit] + return applied_limits @locked def pick(self, queue, session):