T a r e a s e n b a c k g r o u n d c o n R o R y B a c k g r o u n D R b



Documentos relacionados
MANUAL PARA LA INSTALACÍON Y CONFIGURACIÓN DEL CLIENTE PANDION PARA JABBER. Fecha: 12/10/2011 Versión: 1.0.0

La Herramienta Redmine para la Administración de Proyectos Módulo I: Instalación, Configuración y Operación Redmine

La Herramienta Redmine para la Administración de Proyectos Módulo I: Instalación, Configuración y Operación Redmine

Requisitos técnicos para la instalación. Arquitectura Hardware Arquitectura Software. Instrucciones de instalación GONG-R

Objetivo: Introducción conceptual y aplicación básica de los lenguajes del lado del servidor.

Introducción a Webduino

El servidor WEB Apache HTTPD. Tecnologías Web

Rails-5 El carrito de la compra

Servidor Web (Apache Httpd+PHP)

INSTALACION DE UN SERVIDOR LOCAL CON EasyPHP

MAINTraq RealTime MANUAL DE OPERACIÓN 26/03/2008

Instalación de Greenstone en un servidor Linux

Desarrollo de web

Instalando Apache 2.0 en Ubuntu 11.04

Guía para creación de temas para editor de EditandSend

Herramienta Páginas amarillas. Manual de Desarrollo

MAGALLANES. deployment tool

Acceso mediante clientes

Capacitación VMS Herramientas. Seguridad Integral, Detección, Limpieza y Reparación Total

INSTALACIÓN Y CONFIGURACIÓN DE UN SERVIDOR PROXY WPAD + SQUID FILTRADO DE PAGINAS

Instituto Tecnológico de Las Américas (ITLA)

Como crear un túnel entre dos PC s usando el Protocolo SSH

Manual Integración Clientes Servicios WCF. Versión 2.5

1. Servidor Web. (apache). 2. PHP. 3. Manejador de base de datos (mysql, postgress).

ELABORACIÓN DE PÁGINAS WEB. CBTIS No. 02 ISC. RICARDO GARCÍA LÓPEZ

Instituto Tecnológico Las Américas (ITLA) Sistemas Operativos 3 (SO3) Daniel Alejandro Moreno Martínez. Matrícula:

Implementación de una Solución Tecnológica para la Gestión y Control de la Planificación Institucional del Gobierno Regional de Los Lagos

Entorno de desarrollo

TECNOLOGICO DE ESTUDIOS SUPERIORES DEL ORIENTE DEL ESTADO DE MEXICO

Microsoft Virtual Server

Curso de Jboss Administración

Symfony Entorno de trabajo para el desarrollo de aplicaciones. Rodolfo Campos

Cómo publicar el contenido del servidor All-In-One (AIO) a través de WMS o mediante el reproductor nativo

INTRODUCCION. Tema: Protocolo de la Capa de aplicación. FTP HTTP. Autor: Julio Cesar Morejon Rios

Creación de páginas Web

Sesión 20. MVC en ruby on rails. Luisa Fernanda Rincón Pérez

'RFXPHQWDFLyQGHODLQVWDODFLyQGHXQ VHUYLGRU/,18;HQHO,(6$O$QGDOXV PLHUFROHV GH PDU]RGH

Manual de instalación Sistema S.I.S.E. Versión 1.0

Solución: Descargar e instalarse el componente desde la página Web de Microsoft:

PAPI para acceso remoto a publicaciones electrónicas bajo contrato. Presentación. Luis Meléndez Aganzo. luism@uco.es

WEB. Laboratorio de Redes de Computadores II TEL 242. Lab. Redes II. Laboratorio de Redes de Computadores II

La plantilla propone aprovechar esta estructura en común y sólo modificar el contenido del área del documento que sea diferente.

Manual de instalación del opencast: Matterhorn

PROCESO DE INSTALACIÓN Y CONFIGURACIÓN DE APACHE, PHP Y MySQL

Luis Omar Decena Gómez Mat.: Sistema Operativo 2. Prof.: José Doñe. < Crear un Servidor IIS en Windows 2003 Server>.

IBM SPSS Modeler Text Analytics Server for UNIX Instrucciones de instalación

ISJu: Técnicas de Programación Cartilla Teórica-Práctica Instalación del "Eclipse IDE for Java EE Developers" y el servidor "Apache Tomcat"

Manual de usuario Versión: 1.3 Edición: 05/02/2015 1

Guía para la configuración de servidor Amazon EC2

INSTITUTO POLITÉCNICO NACIONAL INSTALACIÓN DEL CLIENTE TREND MICRO

Interface de Búsqueda iah

Joomla! 3.3 Cree y administre sus sitios Web

Tutorial 4. Aplicaciones Web con NetBeans 5.0

Instalación y Mantenimiento de Servicios de Internet

Crear un servidor Web en IIS

Instalación Redmine-Emergya

Presentación Taller. Apache: HTTPD. JoséMiguelHerreraM. UTFSM

Curso de Diseño web. Juan Carlos Hernández Pérez

FRAMEWORK SPRING EN UNA APLICACIÓN WEB

Widget de catálogos. Manual de Usuario. Versión 2. Madrid 13/08/2015

INDICE Qué es SQLyog Instalación del programa...4

Conexión de Mysql con NetBeans

JSP. MSc. Daniel Alejandro Yucra Sotomayor Pag Web Services. Laboratorio Nro. 11. Web Services con JAX-WS con MySQL. I. Competencia General:

MANUAL DE INSTALACIÓN DEL SWGRH

Pagina Principal (front-end) Administrador de la tienda (back-end)

Taller de SELENIUM. Vamos a cacharrear un rato

Curso de. HTML 5 y CSS 3. Por: Ing. Ubaldo Acosta.

Gobierno Electrónico ANEXOS ANEXO A: INSTALACIÓN, CONFIGURACIÓN Y ACTUALIZACIÓN DE JOOMLA, MÓDULOS Y COMPONENTES. Alexandra Paola Guerrero Chuquín

Manual de Actualización Tablet Primux SIROCO 2

Symantec Backup Exec System Recovery Manager

Figura 7-1 Enlace para instalar el servidor web Apache Jakarta Tomcat

MANUAL DE INSTALACIÓN Y CONFIGURACIÓN

ACADEMIA DDW TEMARIO

INSTALACION Y CONFIGURACION DE POSTGRESQL EN FEDORA

Epoptes. Qué es Epoptes? Dónde está?

Manual de ayuda para la descarga y ejecución de la aplicación. Ayuda sobre Java Runtime Environment

Hello, Thanks for signing up for OpenShift! Getting started is easy.

Procedimiento para la instalación del Squid Proxy Server en Linux Ubuntu

Configuración de Aspel SAE 5.0 para trabajar Remotamente. 2. Para configurar Aspel-SAE 5.0 como Servidor Remoto se necesita:

INSTALACIÓN Y USO DE OCS INVENTORY

INSTALACIÓN Y CONFIGURACIÓN SERVIDOR DE BASES DE DATOS POSTGRESQL ADMINISTRACIÓN DE SISTEMAS OPERATIVOS DE RED FRANCISCO JAVIER DUARTE GARCIA

Instrucciones para la instalación de la actualización de ElsaWin 5.00

Desarrollo y servicios web

PROGRAMACIÓN EN PHP. 1. Identificar las características y modalidad de programación bajo PHP.

Quickstart-Webapps-Spring

REDES DE ÁREA LOCAL. APLICACIONES Y SERVICIOS EN WINDOWS

Redatam+SP REcuperación de DATos para Areas pequeñas por Microcomputador

EJECUCIÓN DE TRAZA CIDE REMOTO EN EQUIPOS CON JAVA VERSIÓN 7.x y 8.x

23 de abril de Remote Scan

B1 Print & Delivery Ejemplo Sistema de recordatorio de fechas de vencimiento.

Ejercicio 1. Instalación de JDK, Eclipse, GlassFish y MySql. Java EE. Ejercicio 1. Instalación de JDK, Eclipse, GlassFish y MySql

Configuración de Apache

Actividades. 1.- Cómo podrías saber qué servicio está escuchando en el puerto 80? Con el Nmap o con el comado : $ cat /etc/services grep http

TÉCNICO EN PRACTICA 3: INTRODUCCION. Protocol Secure.) En esta guía por Linux. OBJETIVOS. Al finalizar esta. servidor WEB y FTP.

Monitorización SGBD PostgreSQL

Trabaja los Sistemas Aspel desde tus sucursales con Terminal Server

Universidad Tecnológica del Valle del Mezquital. Desarrollo de Aplicaciones Web. Manual JSP

Instalación SuperADMINISTRADOR.

MANUAL INSTALACIÓN LINUX SITIOS WEB PARA LOS ENTIDADES GUBERNAMENTALES EN LAS

Transcripción:

T a r e a s e n b a c k g r o u n d c o n R o R y B a c k g r o u n D R b IULA UPF Este trabajo se enmarca dentro del proyecto AAILE (financiado por el Ministerio de Educación y Ciencia y el Fondo Social Europeo PTA-CTE/1370/2003) sergio.espeja@upf.edu

T e g u s t a e s p e r a r?

C i c l o p e t i c i ó n / r e s p u e s t a PETICIÓN Cliente Web Inicio de la ejecución RAILS SERVER Final de la ejecución RESPUESTA

P r o b l e m a Procesos de cálculo largos Actualizaciones masivas de datos Peticiones de datos a servidores externos: WebServices Transferencia de archivos etc...

S o l u c i o n e s p o s i b l e s UNIX Cron y script/runner script/runner Modelo.accion Estable pero consume muchos recursos No ejecutable desde la aplicación rails Forks o Threads Programación a muy bajo nivel Fork da problemas en Windows Threads complican la instalación de servidores web como Apache Httpd

B a c k g r o u n D r b Framework para extraer tareas del ciclo de petición/respuesta en RoR Permite fácilmente la comunicación entre la tarea y la aplicación rails Servidor de objetos (DRb) http://chadfowler.com/ruby/drb.html Desarrollado por: Ezra Zygmuntowicz (http://brainspl.at/) skaar@waste.org

B a c k g r o u n D R b, p o s i b l e s a p l i c a c i o n e s Caching Mantener en cache objetos ActiveRecord Mantener sesiones remotas abiertas Cliente web de servicios de mensajería instantánea (ej. Jabber) Servidor de tareas en background

A r q u i t e c t u r a B a c k g r o u n D R b Servidor de tareas Workers MiddleMan Aplicación Rails MiddleMan

M a n o s a l a o b r a Creación de un contador de segundos!

I n s t a l a c i ó n script/plugin install svn://rubyforge.org/var/svn/backgroundrb vendor/plugins/backgroundrb/backgroundrb_rails.rb vendor/plugins/backgroundrb/backgroundrb.rb vendor/plugins/backgroundrb/init.rb vendor/plugins/backgroundrb/lib/backgroundrb.rb vendor/plugins/backgroundrb/tasks/backgroundrb_tasks.rake vendor/plugins/backgroundrb/script/backgroundrb/stop vendor/plugins/backgroundrb/script/backgroundrb/start vendor/plugins/backgroundrb/generators/worker/worker_generator.rb vendor/plugins/backgroundrb/examples vendor/plugins/backgroundrb/test rake backgroundrb:setup config/backgroundrb.yml script/background lib/workers

c o n f i g / b a c k g r o u n d r b. y m l --- port: "22222" timer_sleep: 60 load_rails: true environment: development host: localhost database_yml: config/database.yml acl: deny: all allow: localhost 127.0.0.1 order: deny,allow

P u e s t a e n m a r c h a Encender: ruby script/backgroundrb/start Apagar: ruby script/backgroundrb/stop

C r e a c i ó n d e u n w o r k e r script/generate worker Currante lib/workers/currante_worker.rb test/unit/currante_worker_test.rb

l i b / w o r k e r s / c u r r a n t e _ w o r k e r. r b class CurranteWorker < BackgrounDRb::Rails attr_reader :progreso, :total, :resultado def do_work(args) @progreso = 0; @total = args @total.times { sleep 1 @progreso += 1 } @resultado = "He contado #{args} segundos!" ActiveRecord::Base.connection.disconnect! end end

l i b / w o r k e r s / c u r r a n t e _ w o r k e r. r b class CurranteWorker < BackgrounDRb::Rails attr_reader :progreso, :total, :resultado def do_work(args) @progreso = 0; @total = args @total.times { sleep 1 @progreso += 1 } @resultado = "He contado #{args} segundos!" end end ActiveRecord::Base.connection.disconnect!

P o n e r a t r a b a j a r a n u e s t r o w o r k e r script/generate controller Vigilante app/controllers/vigilante_controller.rb test/functional/vigilante_controller_test.rb app/helpers/vigilante_helper.rb

a p p / c o n t r o l l e r s / v i g i l a n t e _ c o n t r o l l e r. r b class VigilanteController < ApplicationController def index end def lanzar_tarea # Crear el worker session[:jobkey_currante] = MiddleMan.new_worker :class => :currante_worker, :args => 30 end def progreso # Actualizar el % finalizado if session[:jobkey_currante] @progreso = MiddleMan.get_worker(session[:jobkey_currante]).progreso @total = MiddleMan.get_worker(session[:jobkey_currante]).total @completado = @progreso.to_f * 100.0 / @total.to_f redirect_to :action => "finalizado" if @progreso >= @total end end def finalizado # Mostrar resultados @resultado = MiddleMan.get_worker(session[:jobkey_currante]).resultado # Eliminar al worker MiddleMan.delete_worker(session[:jobkey_currante]) session[:jobkey_currante] = nil end end

a p p / v i e w s / v i g i l a n t e / i n d e x. r h t m l <html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"> <title>conferencia Rails Hispana: BackgrounDRb </title> <%= javascript_include_tag :defaults %> </head> <body bgcolor="#f8faec" style="font-size: 1.5em; font-family: georgia;"> <center> <div style="text-align: center; margin-top:100px; padding: 10px; width:70%; background-color:#ccc; border:1px solid;"> <%= periodically_call_remote :url => {:action => "progreso" }, :frequency => 1 %> <div id="progreso"></div> <div id="tarea"> <%= link_to_remote "Hacer currar", :url => {:action => "lanzar_tarea" }%> </div> </div> </center> </body> </html>

a p p / v i e w s / v i g i l a n t e / *. r j s app/views/vigilante/lanzar_tarea.rjs: if session[:jobkey_currante] page.replace_html 'tarea', "Currante con job key #{session[:jobkey_currante]} creado" end app/views/vigilante/progreso.rjs: if @completado page.replace_html 'progreso', " #{"%.2f" % @completado} % Completado" end app/views/vigilante/finalizado.rjs: page.replace_html 'progreso', "100.00 % Finalizado" page.replace_html 'tarea', "Resultado: <pre>#{@resultado}</pre> " \ + link_to_remote("hacer currar de nuevo!", :url => {:action => "lanzar_tarea" })

R e s u l t a d o

R e s u l t a d o

B a c k g r o u n D R b e n d e s a r r o l l o Versión < 0.2.0 (utilizada en los ejemplos) Instalable como plugin 1 proceso, multi threaded Versión 0.2.0 (actual) Experimental, instalable directamente del svn Multiproceso y más robusta Versión 0.3.x (futura) Apta para producción

M á s i n f o r m a c i ó n BackgrounDRB version < 0.2.0 vendor/plugins/backgroundrb/readme BackgrounDRB version 0.2.0 http://backgroundrb.rubyforge.org http://brainspl.at/articles/tag/background http://backgroundrb.devjavu.com Transparencias + Código + Recursos http://bee.com.es/espeja/conferenciarails

G r a c i a s! PREGUNTAS?