fabrice
(Mouttet)
November 18, 2021, 11:05am
1
Bonjour,
Lors de la visite de François nous avons parlé d’un problème sur un script qui est lancé par un job externe via l’utilisateur Public
Le problème s’est reproduit depuis et j’ai l’impression en voyant les logs que la session public se déconnecte et se reconnecte après 5 minutes, Interrompant et relançant le job.
Parmi les pistes évoquées il me semble qu’il y avait le paramètre Webservice session-timeout qui est actuellement à 5 minutes et que nous pourrions augmenter.
Quel est l’impact de ce changement?
Merci
Fabrice
david
(David AZOULAY)
November 18, 2021, 11:20am
2
Lancer un traitement via le user public
n’est sans doute pas la bonne approche.
Le endpoint I/O est en général plutôt le bon point d’entrée pour déclencher des traitements “longs” (par exemple via un adapter). Cf. Simplicité® documentation/02-integration/io-commandline
Francois
(François Genestin)
November 18, 2021, 11:28am
3
Bonjour,
Je n’avais pas eu le temps de bien répondre à ce point.
La session courte doit le rester.
Il faut juste revoir le design pour invoker une Action asynchrone faite pour ça.
Le traitement long doit être une méthode d’une action de l’objet métier qui le porte
Cette action doit être déclarée comme asynchrone = lancée dans un thread à part.
Ensuite par code, votre objet externe public peut instancier l’objet et invoquer l’action.
getGrant().getTmpObjec("MyObject").invokeAction("myAction");
L’avantage d’une action asynchrone est de pouvoir se monitorer dans Exploitation / Taches asynchrones :
Temps de traitement
demander l’arrêt
centraliser les logs de la méthode
Dans Simplicité, il existe un mécanisme de demande d’arrêt d’une tache longue / lancée par Action asynchrone ou via Crontab.
Dans le code de la méthode, il faut vérifier de temps en temps qu’il n’y a pas une demande d’arrêt. Exemple de méthode java d’une Action sur un objet :
public synchronized String myLongAction() {
try {
for (int i=0; i<1000000; i++) {
// Check every 100 items if the thread must stop
if (i>0 && i%100==0)
CronJob.checkForInterruptAndStop(this);
…
system
(system)
Closed
December 18, 2021, 11:29am
4
This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.