Aller au contenu principal
Version : Suivant

QuotaManager

La classe 4D.QuotaManager vous offre une interface permettant de configurer et de surveiller certaines limites d'utilisation que vous appliquez à votre application 4D. Les seuils sont utiles, par exemple, pour protéger le serveur contre les requêtes mal optimisées ou l'utilisation excessive de ses ressources. Typiquement, le gestionnaire de quotas vous permet de définir des limites concernant les ressources ORDA auxquelles une session de serveur REST peut accéder.

Les objets 4D.QuotaManager peuvent être instanciés via la propriété quotas d'un objet session.

Historique
ReleaseModifications
21 R4Classe ajoutée

Objet QuotaManager

Les objets 4D.QuotaManager exposent les propriétés suivantes :

currentValues : Object
defaultEntitySetTimeout : Integer
le délai d'inactivité par défaut pour les entity sets REST stockés en mémoire pendant la session courante (en secondes)
maxEntitySetTimeout : Integer
la valeur du délai d'inactivité maximal pour les entity sets REST stockés en mémoire pendant la session courante (en secondes)
nbEntitySets : Integer

.currentValues

currentValues : Object

Description

La propriété .currentValues contient les valeurs courantes associées aux propriétés de quotas définies. Cet objet est automatiquement mis à jour par le serveur.

.defaultEntitySetTimeout

defaultEntitySetTimeout : Integer

Description

La propriété .defaultEntitySetTimeout contient le délai d'inactivité par défaut pour les entity sets REST stockés en mémoire pendant la session courante (en secondes).

Par défaut, cette valeur est de 2 heures (7200 secondes). Elle peut également être définie lors de la création de l'entity set à l'aide de l'API REST $timeout.

Vous pouvez modifier cette valeur de manière dynamique à l'aide de la propriété quotas.defaultEntitySetTimeout de la session, afin qu'elle s'applique à tout entity set créé par la suite au cours de la session (les valeurs de délai d'expiration par défaut des entity sets existants ne sont pas modifiées).

note

Si vous définissez une valeur supérieure à celle de la propriété maxEntitySetTimeout, elle sera alignée sur la valeur de maxEntitySetTimeout.

Vous ne pouvez pas passer une valeur <= 0 (une erreur est générée dans ce cas). Pour réinitialiser la valeur de la propriété pour la session, passez undefined.

Exemple

Dans un code 4D au sein d'un process REST :

Session.quotas.defaultEntitySetTimeout:=1200

.maxEntitySetTimeout

maxEntitySetTimeout : Integer

Description

La propriété .maxEntitySetTimeout contient la valeur du délai d'inactivité maximal pour les entity sets REST stockés en mémoire pendant la session courante (en secondes).

Vous pouvez définir cette valeur à l'aide de la propriété quotas.maxEntitySetTimeout de la session, afin qu'elle s'applique à tout entity set créé par la suite au cours de la session (les valeurs de délai d'inactivité maximale des entity sets existants ne sont pas modifiées).

Une fois la propriété .maxEntitySetTimeout définie, aucun entity set créé par la suite au cours de la session ne peut avoir un délai d'inactivité supérieur à la valeur de .maxEntitySetTimeout.

Par exemple, en supposant que le délai d'inactivité maximal soit fixé à 40 minutes (2400 secondes), si un entity set est créé avec un délai d'inactivité requis supérieur à cette valeur maximale :

http://127.0.0.1/rest/People?$filter=ID>=4&$method=entityset&$timeout=3000

... alors le délai défini dans la requête est ignoré et l'entity set sera libéré après 40 minutes s'il n'est pas utilisé pendant cette période.

Vous ne pouvez pas passer une valeur <= 0 (une erreur est générée dans ce cas). Pour réinitialiser la valeur de la propriété pour la session, passez undefined.

Exemple

Dans un code 4D au sein d'un process REST :

Session.quotas.maxEntitySetTimeout:=2400

.nbEntitySets

nbEntitySets : Integer

Description

La propriété .nbEntitySets contient le nombre maximal d'entity sets REST autorisés en mémoire pour la session courante (en secondes).

Par défaut, il n'y a pas de limite pour les entity sets stockés en mémoire par les requêtes REST (la valeur est 0). Vous pouvez définir une limite afin de contrôler la charge utile du serveur pour une session spécifique.

Lorsque le nombre maximal d'entity sets autorisé est atteint, une requête REST visant à créer un entity set recevra un status code HTTP 429 et une réponse d'erreur, jusqu'à ce qu'au moins un entity set soit libéré. Vous pouvez libérer un entity set du cache à l'aide de la commande REST $release.

Vous ne pouvez pas passer une valeur <= 0 (une erreur est générée dans ce cas). Pour réinitialiser la valeur de la propriété pour la session, passez undefined.

Exemple

Dans un code 4D au sein d'un process REST :

	//max 50 entity sets
Session.quotas.nbEntitySets:=50