URL: https://linuxfr.org/users/cbonhomme/journaux/pyaggr3g470r Title: pyAggr3g470r Authors: Cédric Bonhomme Date: 2014年04月21日T22:57:08+02:00 License: CC By-SA Tags: autopromotion, python, agrégateur, heroku, pyaggr3g470r, whoosh et logiciel Score: 21 Présentation ============ [pyAggr3g470r](https://bitbucket.org/cedricbonhomme/pyaggr3g470r) est un agrégateur de nouvelles très simple écrit en Python et est sous licence AGPL v3.0. Il utilise le _micro-framework_ [Flask](http://flask.pocoo.org/), et [Bootstrap](http://getbootstrap.com/) comme _framework front-end_. [SQLAlchemy](http://www.sqlalchemy.org/) est utilisé pour la gestion de la base de données et [Gevent](http://gevent.org/) pour le téléchargement des flux. Il est possible de le déployer assez facilement sur votre serveur ou en mode PaaS (Platform as a Service) sur [Heroku](http://heroku.com/). Plusieurs utilisateurs peuvent profiter d'une même instance (avec des comptes utilisateurs et administrateurs). Il est capable de résoudre les URLs des articles (pratique avec les flux qui fournissent des adresses du type `feedproxy.google.com`) et peut être configuré pour passer par un proxy HTTP (par exemple Privoxy/Tor pour les paranoïaques) lorsqu'il n'est pas déployé sur Heroku. Il est également possible d'effectuer des recherches grâce au projet [Whoosh](https://bitbucket.org/mchaput/whoosh/wiki/Home). Cette fonctionnalité est désactivé sur Heroku. Ce problème sera contourné dans une version futur. Prochaines étapes ================= Les principales prochaines étapes sont l'internationalisation, la recherche _full-text_ pour Heroku et le faire à nouveau fonctionner avec Python 3 (oui, je travail à l'envers). Un peu d'historique =================== Le projet date en fait déjà de [2010](https://www.ohloh.net/p/pyAggr3g470r/analyses/latest/languages_summary) et à l'époque utilisait [CherryPy](http://cherrypy.org/) avec une base SQLite. L'interface était moins soignée (et je sais qu'elle est encore largement perfectible). J'ai donc eu l'occasion de tester pas mal de choses, même des algorithmes de classification. J'ai par la suite abandonné [SQLite](https://sqlite.org/) pour [MongoDB](http://www.mongodb.org/) (avec [PyMongo](https://pypi.python.org/pypi/pymongo/) puis [MongoEngine](http://mongoengine.org/), pour tester...). Maintenant j'utilise une base [PostgreSQL](http://www.postgresql.org/). La base contient environ 80.000 articles (voici [un export](http://log.cedricbonhomme.org/) assez récent) et les performances sont plutôt bonnes. J'ai utilisé cette base pour comparer ma solution utilisant Whoosh à [ElasticSearch](http://www.elasticsearch.org/). À ma surprise Whoosh était plus rapide pour rechercher des articles (mais bien plus lent pour indexer la base de données). Ceci dit, même si ElasticSearch avait été plus rapide je serai resté avec Whoosh car je préfère une solution plus Pythonesque et préfère éviter d'obliger l'utilisateur d'installer un serveur Java uniquement pour effectuer des recherches. Le projet est bien entendu ouvert aux contributions (il dispose aussi d'un dépôt sur GitHub). J'espère que ce billet d'autopromotion aura été un minimum intéressant.