Yahoo nos ofrece una serie de herramientas útiles para nuestro entorno de desarrollo y entre esas se encuentra «The Yahoo Weather API», la cual como su nombre lo dice sirve para obtener información del clima de localizades puntuales tanto el clima actual como un pronostico de varios días futuros.
Archivo de la etiqueta: python
Celery & Django (Python 2.7 Celery 3.1.23)
Celery es un framework para el manejo de tareas basado en colas, basandoce en el patrón de diseño Productor consumidor donde el productor le envía trabajo a realizar al consumidor celery se encarga de manejarnos tanto el manejo de la cola de trabajos (jobs) como los workers (consumidores / trabajadores) que serán los que realicen dicha tarea. En este post estaremos integrando Django & Celery y algunos casos de usos para los que son buenos.
Remplazar color en una imagen usando Pillow – Python
Pillow es una super libreria para el trabajo con imagenes en python que a su vez es un fork de otra super libreria llamada PIL.
Hace varios dias tenia que descargar / generar al rededor de 80 iconos de un color en particular estos, resulta que dicho color no era el que necesitaba :/ y tenia que cambiar estas 80 imagenes o descargarlas nuevamente, algo que no iba a pasar, pero bueno soy programador y pos recorde esta libreria Pillow :).
Integración Continua & Entregado continuo CodeShip (Python Fabric)
Integración Continua y Entregado continuo son términos que en estos últimos anos han estado tomando bastante auge, los principios han existido desde siempre en esta área de la tecnología pero ultimamente son tendencia en el área del desarrollo de Software.
Estos términos toman este auge con la tendencia y la gran cantidad que nuevas aplicaciones que necesitan que sus cambios lleguen mas rápido a sus usuarios, cosa de que una funcionalidad sea contemplada en el día 1, en el día 2 se desarrolle y se pruebe y en el día 3 este puesta en producción para el disfrute de los usuarios.
Django Gunicorn & Supervisor
Estar creando una init-scripts o crons jobs para mantener nuestra aplicación corriendo o inicie una vez el sistema haga boot no es nada agradable. Si estas en esa misma situación este tutorial es para ti.
Multiple configuraciones en Django
Mientras estamos desarrollando cualquier proyecto y tenemos nuestra configuración todo va bien, pero en el momento que hay que desplegar dicho proyecto y necesitamos cambiar esa configuración en producción, se convierte en algo incomodo, cuando estas trabajando con un ambiente que tiene integración continua ahi es donde se convierte en un problema.
Lo recomendable es crear un archivo de configuración base de donde cada entorno estará en caso de ser necesario sobre-escribiendo cada configuración.
Sigue leyendo
Error 404 personalizado Django
Este tutorial es simple, como crear nuestro propio error 404 en nuestro proyecto Django, generalmente Django no ofrece algo como esto una vez intentamos acceder a una url no existente.
Sigue leyendo
Visualizador MongoDB (Proyecto)
MongoDB como base de datos se ha estado convirtiendo en algo muy común hoy dia, la mescla con la misma con nodejs al parecer ha caído en gracia a la comunidad de desarrolladores y no solo nodejs sino cualquier otra tecnologia muchos desarrolladores han comenzado a usarla mucho y probar con ella.
MongoDB una base de datos no relacional (nosql) donde no tienes un esquema fijo para almacenar tus datos parece ser un mundo lleno de fantasias, hasta el punto donde tu proyecto pasa a producción y te cansas de estar usando su shell (Que es muy poderoso) para cualquier minima cosa, incluso solo ver un documento y en acciones es un poco difícil leerlo.
Sigue leyendo
Aplicaciónes Modulares con Flask
Flask es un micro framework escrito en python que te permite realizar aplicaciones web de forma muy facil, con tan solo unas cuantas lineas ya tienes una aplicación (bien simple).
Sigue leyendo
Fabric ( Python command line tool )
Hace unos poco dias mientras subia unos cambios de una aplicación me puse a buscar una herramienta que me pudiera ayudar con la automatización de esto de «subir cambios» y «desplegarlos» claro hecho en python o relacionado y encontre varias pero Fabric fue la que mas me llamo la atención, así que Fabric sera.
Que es Fabric?
Fabric es una libreria hecha en python para darnos facilidad al realizar tareas via «command line» y ssh, es como trabajar con «bash script» pero con python (Super poderes) y a eso agregarle mas Super poderes. En si fabric no es una herramienta para hacer «despliegues» o manejar procesos ni nada por el estilo pero tiene la capacidad para serlo y muchos la usan para ese tipo de cosas en conjunto con «SuperVisord» pueden hacer una buena combinación.
Instalación
pip install fabric
Que Puede hacer fabric
- Ejecutar tareas en servidores remotos
- Ejecutar tareas tanto como un single user o un sudo user
- Puede ser ejecutado sobre varios servidores la misma tarea
- Puede ejecutar tareas tanto en paralelo como en secuencia (Uno de tras de la otra)
- Tiene la capacidad de abortar tareas si algo inesperado sucede
Ejemplos
Hello word
#fabfile.py def hello(): print "Hola mundo"
Para ejecutar esta tarea con fabric es simplemente ir a directorio donde esta dicho archivo y ejecutar fab.
#simplemente fab hello #o espesificar el archivo de esta forma fab hello -f fabfile.py
Todo bien hasta aqui e imprime mi «Hola mundo«, ahora si quiero que este mismo hola mundo se ejecute en diferentes servidores lo que tengo que hacer es lo siguiente.
#simplemente fab hello -h localhost,remotehost.net,remotehost.dev #o espesificar el archivo de esta forma fab hello -f fabfile.py -h localhost,remotehost.net,remotehost.dev
Hecho esto su «script» se ejecutara en los sevidores proporcionados, esto fabric lo hace via ssh por lo que les pedira la clave de cada uno de esos servidores, una opcion para evitar esto es relizar un login ssh sin clave.
Hello Server
Este ejemplo lo que hara sera ejecutar un comando en cada uno de los servidores que ejecutemos nuestro «script».
#fabfile.py def hello_server(): run("uname -a")
El ejecutarlo sera igual que el ejemplo anterior.
#simplemente fab hello_server -h localhost,remotehost.net,remotehost.dev #o espesificar el archivo de esta forma fab hello_server -f fabfile.py -h localhost,remotehost.net,remotehost.dev
Para ejecutar un comando en nuestro servidor remoto|local tenemos 2 opciones:
–run(«comando») Ejecutar un comando.
–sudo(«comando») Ejecuta un comando como super user.
–local(«comando») #Todo ver diferencias.
Ejemplo Completo
Digamos que realizamos algo en una app en desarrollo y queremos que produccion tenga esos cambios.
#fabfile.py from fabric.api import run,env,prompt from fabric.colors import red,green env.hosts = ['localhost'] app_dir = "/var/www/superapp/" env_dir = "/var/www/superapp/env/" def activate_env(): cd(env_dir) local("source bin/activate") print(green("Entorno activado")) def load(): local("git pull origin master") print(green("Pull realizado")) def test(): local("command to test your code") print(green("Aplicación probada")) def reload_app(): local("tumbar la aplicación previa e iniciarla nuevamente") def deploy(message): print(message) cd(app_dir) load() test() result = prompt("Quiere reiniciar la aplicacion?[si/no]") if result == 'si': reload_app()
Para ejecutar esto:
#simplemente fab deploy:"mensaje"
Este ejemplo digamos que activa el entorno virtual (virtualEnv 😀 ), obtiene los cambios de un control de versiones, prueba el código y re inicia la aplicación con los nuevos cambios.
Los comandos utilizados
cd – Este es utilizado como el mismo comando por consola.
red / green – Estos comando retornan texto de dicho color y para ser imprimidos en la consola.
prompt – Detiene la ejecución y le pide al usuario que introduzca algún valor.
La variable env.hosts es utilizada para ya no tener que decir fab -H host1,host2,host3 sino que simplemente coloco ahi los targets a donde quiero ejecutar la tarea.