De qué hablamos?

Daniel Mondaca

16 Mar 2017

Selección de recursos para programar con python

A través de los años, como desarrollador responsable de la creación y mantención de varios sistemas de AnaliTIC, me ha tocado probar bastantes soluciones para tareas comunes y no tan comunes dentro de python, y es que dentro de la empresa hemos trabajado con este lenguaje prácticamente desde que empezamos a funcionar. Siendo así, y tal como es de esperarse, muchos procesos de nuestros sistemas en backend así como la mayor parte de nuestros sistemas distribuidos están escritos ya sea en python2 o en python3. De estos años de desarrollo, quisiera dejar en este blog una pequeña selección de preguntas y respuestas que puedan ser útiles para nuestros lectores que estén incursionando en el lenguaje o buscando recursos extras para realizar tareas similares a las que día a día hacemos aquí.

A saber:

  • ¿Necesita descargar y procesar cosas desde la red con python?

Requests ya viene a ser el estándar de facto a la hora de realizar y procesar peticiones HTTP desde python, lo raro en estos tiempos sería utilizar alguna de las urllib básicas.

* ¿Debe conectarse con mysql o con rabbitmq? Nada mejor que confiar en el respaldo de años de funcionamiento de este par de librerías en producción:

PyMySQL: en python3, lejos la librería de conexión con mysql más compatible, libre de bugs importantes y fácil de instalar. Recomendada por sobre Mysqldb sin duda alguna.

Pika: De entre varias probadas en su momento, pika es la única librería de conexión con rabbitmq que ha aguantado la carga de trabajo impuesta en los sistemas de analitic. Conexiones abiertas durante meses y nada de mensajes perdidos o cuelgues.

* ¿Buscando una forma rápida y sencilla para armar un pequeño sistema distribuido?

Pyro4 es una librería para comunicar distintas aplicaciones a través de la red de forma relativamente simple. Fue muy útil en un proyecto de por acá a la hora de administrar procesos al combinarla con multiprocessing y ejecutar funciones remota y automatizadamente. Mientras otras librerías tenían problemas al manejar señales TERM o KILL, Pyro4 no tuvo problema alguno a la hora de asesinar procesos y seguir adelante a sangre fría como si nada.

* ¿Necesita generar un identificador para unos pocos textos cortos muy distintos entre sí?

zlib.adler32, el viejo nunca bien ponderado algoritmo adler32 es rápido y sencillo, no apto para proyectos grandes ni comparable a un md5, pero sin duda muy eficiente en cosas pequeñas.

* ¿Tiene usted que procesar texto para asuntos no triviales y le da flojera de usar nltk?

TextBlob está basada sobre nltk, permite tokenizar, clasificar y traducir texto además de varias otras cosas de forma bastante cómoda. Además, la nltk original queda siempre disponible como un módulo completo y accesible dentro de textblob en caso de necesitar hacer algo a mano.

* Mención honrosa:

Sanic: Similar a flask, microframework web de alto rendimiento, buena alternativa para proyectos pequeños y para probar ciertas bondades exclusivas de python 3.5+.

Para todo lo demás, existe google, http://stackoverflow.com y https://awesome-python.com/.

¡Comenta y comparte!

Relacionados