Aprende a crear y desplegar una aplicación de python que use APIs de BlueVia
-
Upload
bluevia -
Category
Technology
-
view
1.916 -
download
0
description
Transcript of Aprende a crear y desplegar una aplicación de python que use APIs de BlueVia
![Page 1: Aprende a crear y desplegar una aplicación de python que use APIs de BlueVia](https://reader036.fdocuments.net/reader036/viewer/2022081414/54812c615906b5096d8b4608/html5/thumbnails/1.jpg)
Aprende a crear y desplegar una aplicación de python que use APIs de BlueVia
Borja Guardiola – 8 Nov 2012
@bluevia_es
@borjaguardiola
Borja at tid.es
![Page 2: Aprende a crear y desplegar una aplicación de python que use APIs de BlueVia](https://reader036.fdocuments.net/reader036/viewer/2022081414/54812c615906b5096d8b4608/html5/thumbnails/2.jpg)
Agenda
1. Python
2. Entorno
3. Django
4. Despliegue en local
5. Despliegue en la nube
6. Heroku
7. Instant Servers
![Page 3: Aprende a crear y desplegar una aplicación de python que use APIs de BlueVia](https://reader036.fdocuments.net/reader036/viewer/2022081414/54812c615906b5096d8b4608/html5/thumbnails/3.jpg)
Python
Python es un lenguaje de programación interpretado cuya filosofía hace hincapié en una sintaxis muy limpia y que favorezca un código legible.
Características:• Multiparadigma ya que soporta orientación a objetos, programación
imperativa y, en menor medida, programación funcional.• Lenguaje interpretado• Usa tipado dinámico• Es fuertemente tipado• Multiplataforma..
![Page 4: Aprende a crear y desplegar una aplicación de python que use APIs de BlueVia](https://reader036.fdocuments.net/reader036/viewer/2022081414/54812c615906b5096d8b4608/html5/thumbnails/4.jpg)
Virtualenv
Virtualenv es una herramienta para crear entornos de Python aislados
Para crear un entorno virtual
$ Virtualenv venv
![Page 5: Aprende a crear y desplegar una aplicación de python que use APIs de BlueVia](https://reader036.fdocuments.net/reader036/viewer/2022081414/54812c615906b5096d8b4608/html5/thumbnails/5.jpg)
pip
Herramienta de instalación de paquetes de Python.
$ pip install –r requirements.txt
requirements:txt:- Django==1.4- httplib2==0.7.2- oauth2==1.5.211
![Page 6: Aprende a crear y desplegar una aplicación de python que use APIs de BlueVia](https://reader036.fdocuments.net/reader036/viewer/2022081414/54812c615906b5096d8b4608/html5/thumbnails/6.jpg)
Django - createproject
Django es un framework de desarrollo web de código abierto, escrito en Python, que cumple en cierta medida el paradigma del Modelo Vista Controlador.
Creamos proyecto Django
$ python venv/lib/site-packages/django/bin/django-admin.py startproject bvstore$ python manage.py runserver 0.0.0.0:8000
bvstore/manage.pybvstore/
__init__.pysettings.pyurls.pywsgi.py
![Page 7: Aprende a crear y desplegar una aplicación de python que use APIs de BlueVia](https://reader036.fdocuments.net/reader036/viewer/2022081414/54812c615906b5096d8b4608/html5/thumbnails/7.jpg)
Django - startapp
Creamos una aplicación
$ python manage.py startapp purchases
purchases/__init__.pymodels.pytests.pyviews.py
![Page 8: Aprende a crear y desplegar una aplicación de python que use APIs de BlueVia](https://reader036.fdocuments.net/reader036/viewer/2022081414/54812c615906b5096d8b4608/html5/thumbnails/8.jpg)
Django – models.py
Actualizamos el modelo
$ editor models.py
class Product(models.Model): name = models.CharField(max_length=40) content_url = models.CharField(max_length=100) image_url = models.CharField(max_length=100) price = models.IntegerField() currency = models.CharField(max_length=5)
def __unicode__(self): return self.name + "-" + str(self.price) + " " + self.currency
$ python manage.py syncdb
![Page 9: Aprende a crear y desplegar una aplicación de python que use APIs de BlueVia](https://reader036.fdocuments.net/reader036/viewer/2022081414/54812c615906b5096d8b4608/html5/thumbnails/9.jpg)
Django – models.py
Jugando con el API
$ python manage.py shell
from purchases.models import Product
Product.objects.all()
p = Product(name="La Roca",content_url="http://video.com/laroca",image_url="http://laroca.com/i
mg.jpg",price=3,currency="EUR")
p.save()
Product.objects.filter(name=“La Roca”)
![Page 10: Aprende a crear y desplegar una aplicación de python que use APIs de BlueVia](https://reader036.fdocuments.net/reader036/viewer/2022081414/54812c615906b5096d8b4608/html5/thumbnails/10.jpg)
Django – settings.py
Configuración del proyecto
STATICFILES_DIRS = ( os.path.dirname(os.path.realpath(__file__))+"/../static",)
INSTALLED_APPS = ('bvstore.purchases',
)DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3',
'NAME': 'storeapp.database’, }}
Admin options
![Page 11: Aprende a crear y desplegar una aplicación de python que use APIs de BlueVia](https://reader036.fdocuments.net/reader036/viewer/2022081414/54812c615906b5096d8b4608/html5/thumbnails/11.jpg)
Django - urls
Declaración de urls del proyecto. Es una “tabla de contenidos” del proyecto. Las urls tienen la forma:
(regular expression, Python callback function [, optional dictionary])
$ editor urls.py
from django.contrib import admin
admin.autodiscover()
urlpatterns = patterns('',url(r'^$', ‘purchases.views.home', name='home'),
url(r'^admin/doc/', include('django.contrib.admindocs.urls')),url(r'^admin/', include(admin.site.urls)),
)
![Page 12: Aprende a crear y desplegar una aplicación de python que use APIs de BlueVia](https://reader036.fdocuments.net/reader036/viewer/2022081414/54812c615906b5096d8b4608/html5/thumbnails/12.jpg)
Django - admin
Administración de la base de datos
$ editor models.py
admin.site.register(BVApp)admin.site.register(Purchase)
![Page 13: Aprende a crear y desplegar una aplicación de python que use APIs de BlueVia](https://reader036.fdocuments.net/reader036/viewer/2022081414/54812c615906b5096d8b4608/html5/thumbnails/13.jpg)
Django - views
Lógica de la aplicación (controlador):
$ editor views.py
def home(request): return HttpResponse("Hola mundo. Estás en la home.")
def movies(request): return HttpResponse("Hola mundo. Estás en la categoría de películas.")
![Page 14: Aprende a crear y desplegar una aplicación de python que use APIs de BlueVia](https://reader036.fdocuments.net/reader036/viewer/2022081414/54812c615906b5096d8b4608/html5/thumbnails/14.jpg)
Django - templates
Interfaz de la aplicación (vistas). Html con etiquetas especiales.
$ editor settings.py
TEMPLATE_DIRS = (os.path.dirname(os.path.realpath(__file__))+"/templates“
)
$ editor views.py
return render_to_response('store.html',context_instance=RequestContext(request))
![Page 15: Aprende a crear y desplegar una aplicación de python que use APIs de BlueVia](https://reader036.fdocuments.net/reader036/viewer/2022081414/54812c615906b5096d8b4608/html5/thumbnails/15.jpg)
Django - templates
Interfaz de la aplicación (vistas). Html con etiquetas especiales.
$ editor store.html
{% if purchase_list %}
<h6>Películas compradas</h6>
{% for p in purchase_list %}
<p>{{ p.product_name }}</p>
{% endfor %}
{% else %}
<h6>No hay ninguna compra realizada.</h6>
{% endif %}
![Page 16: Aprende a crear y desplegar una aplicación de python que use APIs de BlueVia](https://reader036.fdocuments.net/reader036/viewer/2022081414/54812c615906b5096d8b4608/html5/thumbnails/16.jpg)
Bluevia
Bluevia es la iniciativa de desarrolladores de Telefónica y Telenor, que ofrece principalmente APIs de pagos y comunicaciones pero también otros productos y servicios que son de ayuda a los desarrolladores (ej. Instant Servers, Arduino)
![Page 17: Aprende a crear y desplegar una aplicación de python que use APIs de BlueVia](https://reader036.fdocuments.net/reader036/viewer/2022081414/54812c615906b5096d8b4608/html5/thumbnails/17.jpg)
Bluevia - Pagos
Flujo de pago de Bluevia
1. Autorización + callback (Oauth like)
2. Invocación del pago
3. Status (opcional)
![Page 18: Aprende a crear y desplegar una aplicación de python que use APIs de BlueVia](https://reader036.fdocuments.net/reader036/viewer/2022081414/54812c615906b5096d8b4608/html5/thumbnails/18.jpg)
Bluevia - Pagos
Autorización
$ editor views.py
• Autorización purchase
• Callback authorized
• Invocación del pago authorized
![Page 19: Aprende a crear y desplegar una aplicación de python que use APIs de BlueVia](https://reader036.fdocuments.net/reader036/viewer/2022081414/54812c615906b5096d8b4608/html5/thumbnails/19.jpg)
Desplegar en Cloud
Other detailsIncluding date etc.
Los nuevos Clientes Siempre conectados a través de diferentes dispositivos
Son consumidores de información y servicios pero también creadores de contenidos
Los clientes tienen nuevas necesidades que las empresas digitales pueden satisfacer aprovechando las ventajas de la Cloud Pública.
Emprendedores digitales Ofrecen servicios a través de una o varias aplicaciones a sus clientes/usuarios (empresas o
particulares)
Los ingresos se generan al cobrar cuota por servicio, por publicidad o en modalidades mixtas «freemium»
La nube Servidores que alojan aplicaciones de las nuevas empresas para permitir que sus usuarios
puedan conectarse desde cualquier lugar y dispositivo
La «Cloud» pública: el modelo más eficiente para las start-ups
![Page 20: Aprende a crear y desplegar una aplicación de python que use APIs de BlueVia](https://reader036.fdocuments.net/reader036/viewer/2022081414/54812c615906b5096d8b4608/html5/thumbnails/20.jpg)
¿Por qué Cloud Pública?
Other detailsIncluding date etc.
Sin inversiones, sin amortizaciones. Pago por horas de uso.
Proyectos que arrancan, con incertidumbre de futuro. Poco presupuesto en el arranque. Necesidad de variabilizar los costes.
Flexibilidad inmediata para crecer o decrecer y solo pagar por lo usado.
Demanda desconocida, muy poca al principio pero con crecimientos rápidos.
Provisión inmediata que permite tener las máquinas funcionando en minutos.
Entorno muy cambiante en el que solo los más ágiles triunfan.
Servicio gestionado por un experto. SLAs y disponibilidades de servicio.
Empresas muy pequeñas, los emprendedores deben enfocarse en su negocio y no preocuparse por lo que lo sustenta.
Condicionantes de los emprendedores digitales
Ventajas de la Cloud Pública
![Page 21: Aprende a crear y desplegar una aplicación de python que use APIs de BlueVia](https://reader036.fdocuments.net/reader036/viewer/2022081414/54812c615906b5096d8b4608/html5/thumbnails/21.jpg)
PaaS e IaaS
Other detailsIncluding date etc.
PaaS: Plataforma com
o Servicio (H
eroku)
IaaS
: Inf
raes
truc
tura
com
o Se
rvic
io (I
nsta
nt S
erve
rs)
![Page 22: Aprende a crear y desplegar una aplicación de python que use APIs de BlueVia](https://reader036.fdocuments.net/reader036/viewer/2022081414/54812c615906b5096d8b4608/html5/thumbnails/22.jpg)
Heroku deploy
PaaS que soporta Ruby, Java, Node.js, Scala, Clojure and Python
Best practices de www.12factor.net
Pasos:
• Creación de cuenta
• Heroku client
• Requirements.txt (psycopg2==2.4.5 dj-database-url==0.2.0)
• Procfile
• Crear aplicación (heroku apps:create circusapp -s cedar)
• Crear base de datos (add-on)
![Page 23: Aprende a crear y desplegar una aplicación de python que use APIs de BlueVia](https://reader036.fdocuments.net/reader036/viewer/2022081414/54812c615906b5096d8b4608/html5/thumbnails/23.jpg)
Heroku deploy (II)
Pasos:
• Promote DB – Establece BBDD por defecto (heroku pg:promote HEROKU_POSTGRESQL_AQUA)
• Syncdb (heroku run python bvstore/manage.py syncdb)
• Despliegue git push (git push heroku master)
• Enjoy! http://circusapp.herokuapp.com/movies
![Page 24: Aprende a crear y desplegar una aplicación de python que use APIs de BlueVia](https://reader036.fdocuments.net/reader036/viewer/2022081414/54812c615906b5096d8b4608/html5/thumbnails/24.jpg)
Instant Servers deploy
IaaS, el servicio de Cloud Pública de Telefónica para las start-ups digitalesOfrece provisión inmediata, total libertad de gestión de las diferentes máquinas, virtuales, pago por uso y alta disponibilidad y rendimiento
Pasos:
• Creación de cuenta
• Configuración clave ssh
• Copiar site
• Crear virtualenv (python virtualenv.py --system-site-packages ~/projects/site/venv)
• Instalar dependencias (pip install -r requirements)
• Sincronizar BBDD
• Runserver y enjoy! http://81.45.18.53:8000/movies
![Page 25: Aprende a crear y desplegar una aplicación de python que use APIs de BlueVia](https://reader036.fdocuments.net/reader036/viewer/2022081414/54812c615906b5096d8b4608/html5/thumbnails/25.jpg)
Comparativa PaaS vs. IaaS
Other detailsIncluding date etc.
Completamente flexible. Permite instalar cualquier cosa en la máquina.
Más barato en producción.
1 mes gratis sin límite de capacidad.
SLAs a nivel de máquina y servicio
Requiere más conocimientos y es necesario realizar más tareas de administración y configuración.
Sin entorno de desarrollo gratuito (máquina 0,5 gratis 6 meses próximamente)
(Se factura por máquina – 0,06$ máquina 1GB/hora)
Fácil y sencillo de usar. Se despliega una aplicación muy rápido.Entorno de desarrollo gratuito (1 hilo / 10.000 registros BD)SLAs a nivel de aplicación.
Menos flexible, tiene una serie de add-ons de pago pero no permite instalar software aparte.Más caro en producción.
(Se factura por hilos de ejecución – 0,05$ 1 hilo/hora)
PaaS: Plataforma como Servicio (Heroku)
IaaS: Infraestructura como Servicio (Instant Servers)
+
-
+
-
![Page 26: Aprende a crear y desplegar una aplicación de python que use APIs de BlueVia](https://reader036.fdocuments.net/reader036/viewer/2022081414/54812c615906b5096d8b4608/html5/thumbnails/26.jpg)
Instant Servers
Other detailsIncluding date etc.
www. Ins tan tServers .es
Soporte en castellano Datos alojados en España o UK Calidad y niveles de servicio garantizados por contrato (99,9% de
disponibilidad trimestral por máquina con penalizaciones)
Tecnología 20-30% más potente
![Page 27: Aprende a crear y desplegar una aplicación de python que use APIs de BlueVia](https://reader036.fdocuments.net/reader036/viewer/2022081414/54812c615906b5096d8b4608/html5/thumbnails/27.jpg)
Credits
• www.python.org/
• www.djangoproject.com/
• foundation.zurb.com/
• www.heroku.com
• www.instantservers.es
• www.bluevia.com