Development #55092
Provisionning des roles de des utilisateurs : utiliser les spooler uwsgi
0%
Description
Lorsque l'on est en mode provisionning HTTP, passer le boulot au spooler et répondre OK sans attendre.
Fichiers
Demandes liées
Révisions associées
provisionning: use uwsgi spooler (#55092)
Historique
Mis à jour par Emmanuel Cazenave il y a presque 3 ans
- Statut changé de Nouveau à En cours
- Assigné à mis à Emmanuel Cazenave
Mis à jour par Emmanuel Cazenave il y a presque 3 ans
- Fichier 0001-provisionning-use-uwsgi-spooler-to-provision-roles-5.patch 0001-provisionning-use-uwsgi-spooler-to-provision-roles-5.patch ajouté
- Patch proposed changé de Non à Oui
Ça pourrait être un truc dans ce goût là.
Le préalable étant bien sûr d'avoir ajouté du --spooler /var/lib/XXX/spooler/ etc là ou ça n'est pas encore fait et aussi de rajouter un spooler-python-import = hobo.provisionning.spooler
dans les confs uwsgi.
J'anticipe pour assurer la même chose sur le provisionning utilisateurs ça s'annonce plus compliqué :
for i in range(20): try: getattr(self, 'provision_' + object_type)( issuer, action, notification['objects']['data'], full=full ) except TryAgain: continue break
(il y a que provision_user
qui lance des TryAgain). Je ne sais pas comment on peut re-essayer 20 fois puis stop une tache passée à un spooler uwsgi.
Mis à jour par Emmanuel Cazenave il y a presque 3 ans
- Fichier 0001-provisionning-use-uwsgi-spooler-55092.patch 0001-provisionning-use-uwsgi-spooler-55092.patch ajouté
- Sujet changé de Provisionning des roles : utiliser les spooler uwsgi à Provisionning des roles de des utilisateurs : utiliser les spooler uwsgi
- Statut changé de En cours à Solution proposée
Emmanuel Cazenave a écrit :
J'anticipe pour assurer la même chose sur le provisionning utilisateurs ça s'annonce plus compliqué :
En fait c'est très simple, il suffit de boucler dans le job uwsgi plutôt qu'en dehors.
Nouvelle version qui gère aussi les utilisateurs, parce que c'est tout à fait immédiat de gérer les utilisateurs et rôles plutôt que de chercher à faire ça dans deux tickets distincts.
Le seul truc loufoque est le le import hobo.multitenant.settings_loaders
, voit commentaire dans le code.
Mis à jour par Emmanuel Cazenave il y a presque 3 ans
- Lié à Development #55566: Debian : permettre l'utilisation d'un spooler uwsgi ajouté
Mis à jour par Emmanuel Cazenave il y a presque 3 ans
- Lié à Development #55567: Debian : permettre l'utilisation d'un spooler uwsgi ajouté
Mis à jour par Emmanuel Cazenave il y a presque 3 ans
- Lié à Development #55568: Debian : permettre l'utilisation d'un spooler uwsgi ajouté
Mis à jour par Emmanuel Cazenave il y a presque 3 ans
- Lié à Development #55570: Debian : permettre l'utilisation d'un spooler uwsgi ajouté
Mis à jour par Emmanuel Cazenave il y a presque 3 ans
- Lié à Development #55571: Provisionning HTTP : utiliser le spooler uwsgi ajouté
Mis à jour par Benjamin Dauvergne il y a plus de 2 ans
- Statut changé de Solution proposée à En cours
Je serai d'avis de factoriser ce bout de code entre le chemin spool/pas spool :
for i in range(20): try: getattr(self, 'provision_' + object_type)( issuer, action, notification['objects']['data'], full=full ) except TryAgain: continue break
Les exceptions interceptées il faut les logger, avec un bête logging.getLogger(__name__).exception('provisionning failed')
.
Mis à jour par Emmanuel Cazenave il y a plus de 2 ans
- Fichier 0001-provisionning-use-uwsgi-spooler-55092.patch 0001-provisionning-use-uwsgi-spooler-55092.patch ajouté
- Statut changé de En cours à Solution proposée
Voilà.
Mis à jour par Benjamin Dauvergne il y a plus de 2 ans
- Statut changé de Solution proposée à Solution validée
Ok.
Mis à jour par Frédéric Péters il y a plus de 2 ans
J'étais sur le point de tagger chrono & combo, mais il se passe quoi si je le fais alors qu'il y a spooler-python-import = hobo.provisionning.spooler
dedans et pas de hobo taggué avec ça ?
+ # we nedd to catch every exceptions otherwise the task will be re scheduled for ever and ever
need.
Mis à jour par Frédéric Péters il y a plus de 2 ans
mais il se passe quoi si je le fais alors qu'il y a spooler-python-import = hobo.provisionning.spooler dedans et pas de hobo taggué avec ça
Je me réponds, testé sur la plateforme de dev, ça fait juste dans les logs cette ligne, ça ne bloque pas le démarrage,
sep 01 10:24:36 combo uwsgi[16623]: ModuleNotFoundError: No module named 'hobo.provisionning.spooler'
Mis à jour par Emmanuel Cazenave il y a plus de 2 ans
- Statut changé de Solution validée à Résolu (à déployer)
commit 4d2d6a05d1a9850afe54c87a9116cc3f2402d562 (HEAD -> main, origin/main, wip/55092-uwsgi-roles-clean) Author: Emmanuel Cazenave <ecazenave@entrouvert.com> Date: Tue Jun 29 11:35:00 2021 +0200 provisionning: use uwsgi spooler (#55092)
Mis à jour par Frédéric Péters il y a plus de 2 ans
- Statut changé de Résolu (à déployer) à Solution déployée
Mis à jour par Benjamin Dauvergne il y a plus de 2 ans
- Lié à Development #56920: ajouter un paramètre pour garantir la synchronicité dans /api/provision ajouté
uwsgi: enable provisionning spooler (#55092)