Project

General

Profile

Development #36894

Débuter la prise en charge de python3

Added by Emmanuel Cazenave 2 months ago. Updated 18 days ago.

Status:
Solution déployée
Priority:
Normal
Target version:
-
Start date:
14 Oct 2019
Due date:
% Done:

0%

Patch proposed:
Yes
Planning:
No

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.

0001-disable-debug-toolbar-36894.patch View (1.74 KB) Emmanuel Cazenave, 05 Nov 2019 01:39 PM

0002-run-chrono-and-combo-in-python3-36894.patch View (15.5 KB) Emmanuel Cazenave, 05 Nov 2019 01:39 PM

0001-run-chrono-and-combo-in-python3-36894.patch View (16.4 KB) Emmanuel Cazenave, 07 Nov 2019 04:13 PM

0001-run-chrono-and-combo-in-python3-36894.patch View (17.3 KB) Emmanuel Cazenave, 12 Nov 2019 06:55 PM

0002-run-chrono-and-combo-in-python3-36894.patch View (14.8 KB) Emmanuel Cazenave, 26 Nov 2019 06:59 PM

0001-move-common-python-packages-installation-to-roles-ba.patch View (3.68 KB) Emmanuel Cazenave, 26 Nov 2019 06:59 PM


Related issues

Related to Publik Installation Développeur - Development #37142: Installer la dernière version de django avec laquelle on est compatible Nouveau 22 Oct 2019
Related to Publik Installation Développeur - Bug #37450: debug-toolbar mal configurée en python3 Rejeté 05 Nov 2019

Associated revisions

Revision ec80eaa5 (diff)
Added by Emmanuel Cazenave 18 days ago

move common python packages installation to roles/base (#36894)

Revision 23133f98 (diff)
Added by Emmanuel Cazenave 18 days ago

disable debug-toolbar in combo (#36894)

Not working in python3 probably because combo still uses MIDDLEWARE_CLASSES.

Revision 07984a87 (diff)
Added by Emmanuel Cazenave 18 days ago

run chrono and combo in python3 (#36894)

History

#1 Updated by Emmanuel Cazenave about 2 months ago

  • Related to Development #37142: Installer la dernière version de django avec laquelle on est compatible added

#2 Updated by Emmanuel Cazenave about 2 months ago

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 ?

#3 Updated by Frédéric Péters about 2 months ago

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).

#4 Updated by Emmanuel Cazenave about 1 month ago

  • Related to Bug #37450: debug-toolbar mal configurée en python3 added

#5 Updated by Emmanuel Cazenave about 1 month ago

Ç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.

#6 Updated by Emmanuel Cazenave about 1 month ago

Avec la solution proposée par Benj dans #37450.

#7 Updated by Emmanuel Cazenave about 1 month ago

  • Status changed from Solution proposée to 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.

#8 Updated by Emmanuel Cazenave about 1 month ago

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 %}

#9 Updated by Benjamin Dauvergne 27 days ago

  • 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 %}
    

#10 Updated by Benjamin Dauvergne 27 days ago

  • Status changed from Solution proposée to En cours

#11 Updated by Emmanuel Cazenave 20 days ago

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.

#12 Updated by Benjamin Dauvergne 18 days ago

  • Assignee set to Emmanuel Cazenave
  • Status changed from Solution proposée to Solution validée

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' %}

#13 Updated by Emmanuel Cazenave 18 days ago

  • Status changed from Solution validée to 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)

Also available in: Atom PDF