Development #36894
Débuter la prise en charge de python3
0%
Description
Certaines briques tournent en python3 en prod, il faudrait suivre cela.
Créer un deuxième venv, celui-ci python3, y installer les briques concernées plutôt que dans le venv python2.
Puis modifier dans les fichiers de configuration supervisord (et autres, faire le tour) le chemin des commandes de management.
Fichiers
Demandes liées
Révisions associées
disable debug-toolbar in combo (#36894)
Not working in python3 probably because combo still uses MIDDLEWARE_CLASSES.
run chrono and combo in python3 (#36894)
Historique
Mis à jour par Emmanuel Cazenave il y a plus de 4 ans
- Lié à Development #37142: Installer la dernière version de django avec laquelle on est compatible ajouté
Mis à jour par Emmanuel Cazenave il y a plus de 4 ans
Question pour Fred qui est probablement le seul à tourner en local certaines briques en python 3, sur quelle version de python3 es-tu ? 3.5 comme en prod ?
Mis à jour par Frédéric Péters il y a plus de 4 ans
3.7 (qui est la version actuelle de Python 3 dans usntable); mais j'ai aussi un venv en Python 3.5, au cas où (le seul cas utile jusqu'à présent ça a été sur des différences de comportements autour de json.load, avec les versions à partir de 3.6 plus souples dans ce qu'elles acceptent).
Mis à jour par Emmanuel Cazenave il y a plus de 4 ans
- Lié à Bug #37450: debug-toolbar mal configurée en python3 ajouté
Mis à jour par Emmanuel Cazenave il y a plus de 4 ans
- Fichier 0001-disable-debug-toolbar-36894.patch 0001-disable-debug-toolbar-36894.patch ajouté
- Fichier 0002-run-chrono-and-combo-in-python3-36894.patch 0002-run-chrono-and-combo-in-python3-36894.patch ajouté
- Statut changé de Nouveau à Solution proposée
- Patch proposed changé de Non à Oui
Ça commence par désactiver la toolbar qui gagne son propre ticket (#37450) parce que ça a l'air un peu galère.
Ensuite c'est tout comme on a dit, un deuxième env, on y installe chrono et combo et les dépendances qui vont bien, puis les chemins de conf qui changent pour leurs commandes de management et démons.
Mis à jour par Emmanuel Cazenave il y a plus de 4 ans
- Fichier 0001-run-chrono-and-combo-in-python3-36894.patch 0001-run-chrono-and-combo-in-python3-36894.patch ajouté
Avec la solution proposée par Benj dans #37450.
Mis à jour par Emmanuel Cazenave il y a plus de 4 ans
- Statut changé de Solution proposée à En cours
Le hobo-agent doit exécuter les commandes manage en python3 pour combo et chrono, ce n'est pas encore le cas avec mon patch.
Mis à jour par Emmanuel Cazenave il y a plus de 4 ans
- Fichier 0001-run-chrono-and-combo-in-python3-36894.patch 0001-run-chrono-and-combo-in-python3-36894.patch ajouté
- Statut changé de En cours à Solution proposée
diff --git a/roles/hobo-agent/templates/hobo-agent-settings.j2 b/roles/hobo-agent/templates/hobo-agent-settings.j2 index f53a510..2b31f8d 100644 --- a/roles/hobo-agent/templates/hobo-agent-settings.j2 +++ b/roles/hobo-agent/templates/hobo-agent-settings.j2 @@ -9,7 +9,12 @@ AGENT_HOST_PATTERNS = { {% for appkey, app in apps.items() %} {% if appkey != 'wcs' %} +{% if appkey in ('combo', 'chrono') %} +{% filter upper %}{{appkey}}{% endfilter %}_MANAGE_COMMAND = "{{venv_py3_bin}}/{{app['project_name']}}-manage" +{% else %} {% filter upper %}{{appkey}}{% endfilter %}_MANAGE_COMMAND = "{{venv_bin}}/{{app['project_name']}}-manage" +{% endif %}
Mis à jour par Benjamin Dauvergne il y a plus de 4 ans
- Il n'y a pas d'exec en python :
exec(open('{{src_dir}}/hobo/debian/debian_config_common.py').read())
- Il faut faire @from future import print_function pour pouvoir utiliser print() en python2:
print("Missing debug toolbar")
- Si le retrait de l'installation de python-memcachde n'a pas de rapport avec python3 ça devrait aller dans un commit à part ou un autre ticket
- Bon c'est dommage qu'on doive doublonner toutes les installations de paquet pour py2 et py3; ne connaissant pas bien ansible je n'ai pas de suggestion, je fais juste la remarque (ne pourrait-on faire une variable venv à laquelle on affecte venv2 puis venv3 et appeler deux fois la même tâche ?)
- les {% if appkey... %} ça devient un peu le foutoir je verrai bien un truc comme ça plus clair :
{% if appkey == 'wcs' %} # cas wcs {% elif appkey in ('combo', 'chrono') %} {% comment %}applications en python3{% endcomment %} # cas combo et chrono {% else %} {% comment %}cas général, applications Django toutjours en python2, devra disparaître{% endcomment %} ... {% endif %}
Mis à jour par Benjamin Dauvergne il y a plus de 4 ans
- Statut changé de Solution proposée à En cours
Mis à jour par Emmanuel Cazenave il y a plus de 4 ans
- Fichier 0001-move-common-python-packages-installation-to-roles-ba.patch 0001-move-common-python-packages-installation-to-roles-ba.patch ajouté
- Fichier 0002-run-chrono-and-combo-in-python3-36894.patch 0002-run-chrono-and-combo-in-python3-36894.patch ajouté
- Statut changé de En cours à Solution proposée
Benjamin Dauvergne a écrit :
- Il n'y a pas d'exec en python :
Si si https://docs.python.org/fr/2/reference/simple_stmts.html#exec, https://docs.python.org/fr/3/library/functions.html#exec, http://git.entrouvert.org/hobo.git/tree/debian/debian_config_settings_d.py .
- Il faut faire @from future import print_function pour pouvoir utiliser print() en python2:
Le print a giclé dans #37920 (j'ai rebasé sur master).
- Si le retrait de l'installation de python-memcachde n'a pas de rapport avec python3 ça devrait aller dans un commit à part ou un autre ticket
Pas de retrait, j'ai juste déplacé de roles/authentic/tasks/main.yml vers roles/base/tasks/main.yml . Ce n'est pas le seul déplacement de ce type, j'ai regroupé toutes les installations de package python 'transversaux' dans roles/base/tasks/main.yml . Ces installations étaient disséminés dans les roles/nom-de-la-brique/tasks/main.yml pour des raisons historiques foireuses et je commençais à trouver ça bordélique (il y avait des duplications). Maintenant dans un premier commit à part pour clarifier la chose.
- Bon c'est dommage qu'on doive doublonner toutes les installations de paquet pour py2 et py3;
Oui d'accord (j'avais eu un peu la flemme de creuser) et voici maintenant avec une utilisation de loop
qui résout ça et qui monte notre pré-requis ansible à 2.5 (pas de soucis, dans buster on est en 2.7).
- les {% if appkey... %} ça devient un peu le foutoir je verrai bien un truc comme ça plus clair
D'accord également j'ai tenu compte.
Mis à jour par Benjamin Dauvergne il y a plus de 4 ans
- Statut changé de Solution proposée à Solution validée
- Assigné à mis à Emmanuel Cazenave
Emmanuel Cazenave a écrit :
Benjamin Dauvergne a écrit :
- Il n'y a pas d'exec en python :
Si si https://docs.python.org/fr/2/reference/simple_stmts.html#exec, https://docs.python.org/fr/3/library/functions.html#exec, http://git.entrouvert.org/hobo.git/tree/debian/debian_config_settings_d.py .
Ok c'est comme print, j'ai juste fait exec ça m'a répondu "Syntax Error" et j'ai conclu un peu vite.
Je mettrai bien ça dans son propre commit pour pouvoir le reverter sous peu (a priori il manque juste de passer combo en MIDDLEWARE
) :
{% include 'middleware_class_debug_toolbar.j2' %}
Mis à jour par Emmanuel Cazenave il y a plus de 4 ans
- Statut changé de Solution validée à Solution déployée
commit 07984a871de5e14dc78f67695f833347af80f0c1 Author: Emmanuel Cazenave <ecazenave@entrouvert.com> Date: Tue Nov 26 17:51:35 2019 +0100 run chrono and combo in python3 (#36894) commit 23133f9888245b9a8e23ec0471f9cb47a2e6e27f Author: Emmanuel Cazenave <ecazenave@entrouvert.com> Date: Thu Nov 28 13:58:17 2019 +0100 disable debug-toolbar in combo (#36894) Not working in python3 probably because combo still uses MIDDLEWARE_CLASSES. commit ec80eaa5a6072a157940cff54280379060a2c832 Author: Emmanuel Cazenave <ecazenave@entrouvert.com> Date: Tue Nov 26 17:15:14 2019 +0100 move common python packages installation to roles/base (#36894)
move common python packages installation to roles/base (#36894)