J'ai eu le plaisir de participer à la conférence PyconFR 2014, voici quelques notes sur les présentations auxquelles j'ai pu assister. Étant donné la longueur, je vais publier sous forme de plusieurs billets de blog.

http://www.pycon.fr/2014_static/pyconfr/images/banner.png

BDD avec Behave

Le Behaviour Driven Develpment en Python peut se faire avec behave. Dans un premier temps on décrit en language "naturel" le test. Dans un deuxième temps on implémente les tests unitaires pour faire le lien avec la description behave, et on met les chaines de caractères dans un decorateur @given, puis @when puis @then.

Les scenarios behave sont utiles pour le dévelopement, pour la documentation, pour la formation des nouveaux arrivants et même pour faciliter la supervision des applications en production.

Les diapos de la présentation sont disponible sur slideshare.

Python + PostgreSQL

Stéphane Wirtle nous a présenté comment les relations étroites entre le monde de Python et celui de PostgreSQL.

https://avatars1.githubusercontent.com/u/2947270?v=2&s=400

Points à noter :

  • FDW : Foreign Data Wrapper, dont voici une liste sur le wiki de PostgreSQL
  • PL (Procedure Language) : PL/C, PL/Python, PL/v8, etc. pour étendre sa base de donnée. Les procedure language SQL sont par défault "trusted", les autres ne sont pas trusted par défaut. Dans CubicWeb, nous utilisons PL/Python pour la recherche plein texte et la lemmatisation du texte.

Pour ceux qui souhaiteraient essayer un ORM, Stéphane Wirtle conseille Peewee ORM.

Pour les migrations de schema SQLalchemy, Stéphane Wirtle nous conseille Alembic.

Parfois un ORM peut générer beaucoup de requêtes SQL et il y a de la place pour une optimisation en tapant directement du SQL. Pour évaluer la surcharge dûe à l'ORM, on peut utiliser pgBadger.

Support de présentation : https://speakerdeck.com/matrixise/python-and-postgresql-a-wonderful-wedding/

Un serveur fiable avec python 3.4

Après une petite introduction aux principes de concurrence, Martin Richard nous a présenté un retour d'expérience sur l'utilisation du module asyncio introduit dans python 3.4. Il permet de ne plus avoir à utiliser twisted ou gevent.

Les ressources et bibliothèques qui utilisent asyncio sont recensées sur http://asyncio.org/

objgraph permet de d'analyser des structures de données Python pour identifier des fuites memoire.

memoryview introduit dans python3.4 permet de faire "référence" à une structure de données sans la copier, ce qui peut être très pratique mais rend complexe la gestion de code.

Martin a utilisé @lru_cache pour mettre en cache les resultats d'un calcul en utilisant la politique de cache "Least Recently Used (LRU)".

Support de présentation : http://marti.us/t/pyconfr-2014/

blog entry of