Sub :: Rebanada

Dividir tareas de larga duración en trozos manejables
Descargar ahora

Sub :: Rebanada Clasificación y resumen

Anuncio publicitario

  • Rating:
  • Licencia:
  • GPL
  • Precio:
  • FREE
  • Nombre del editor:
  • BBC
  • Sitio web del editor:
  • http://www.bbc.co.uk

Sub :: Rebanada Etiquetas


Sub :: Rebanada Descripción

Dividir tareas de larga duración en trozos manejables Sub :: Slice es un módulo Perl que rompe un largo proceso en trozos más pequeños que se puede ejecutar una a la vez durante un protocolo sin estado, como HTTP / SOAP para que se pueda informar el progreso. Esto significa que el cliente puede mostrar el progreso o cancelar la operación de forma parcial a través.it trabaja por el cliente solicitando un token del servidor y pase el token al servidor en cada iteración. El token pasó al cliente contiene información de estado que el cliente puede usar para determinar si el trabajo ha completado / fallido y para mostrar los mensajes de estado / error. En la rutina se llama a cada iteración, el servidor define un conjunto de coderefs, uno de los cuales Será llamado a una iteración dada. Además, el servidor puede definir que los coderefs se llamen al inicio y al final del trabajo. El servidor puede proporcionar al cliente una estimación del número de iteraciones que es probable que el trabajo sea posible. Es posible equilibrar el rendimiento / usabilidad modificando el número de iteraciones que se ejecutarán antes de regresar el progreso al cliente.synopsis # Client # # Supongamos métodos en el servidor :: El paquete se remota mágicamente My $ Token = Server :: Create_Token (); para (1 .. max_iterations) {servidor :: do_work ($ token); Por último si $ token -> {hecho}; } # Servidor # Imagine Esto está en un servidor de paquetes de máquina remota; Usa Sub :: Rebanada; Sub Create_token {# Crear un nuevo trabajo: My $ Job = New Sub :: Slice (Backend => 'Filesystem', Storage_Options => {ruta => '/ var / tmp / myproject /',}); Devuelve $ trabajo-> token; } Sub do_work {# Cargando un trabajo existente: My $ Job = New Sub :: Slice (token => $ token backend => 'filesystem', storage_options => {ruta => '/ var / tmp / myproject /',} ) at_start $ trabajo sub {$ trabajo-> tienda ('foo', '1'); $ trabajo-> Tienda ('Bar', {abc => 'def'}); # Tienda de datos, Inicializa $ trabajo-> Set_Astime (10); # Estimar el número de pasos retorno ($ trabajo-> fetch ('foo')); }; My $ foo = $ trabajo-> fetch ('foo'); at_stage $ trabajo "Stage_one", sub {My $ Bar = $ trabajo-> Fetch ('Bar'); # hacer cosas $ trabajo-> next_stage ('stage_two') si $ some_condition; }; at_stage $ trabajo "Stage_TWO", Sub {# ... Hacer más cosas ... # Mark Trabajo como Listo para ser eliminado $ trabajo-> Hecho () Si $ TRABABS-> CUENTA () == $ TRABAJO-> Estimación ( ) }; devuelva $ trabajo-> return_value (); #PASS ATRÁS CUALQUIER VIAJE DE RETORNO DE LOS REQUISITOS DE CODERFS}: · Perl


Sub :: Rebanada Software relacionado