Sub :: Fatia

Dividir tarefas de longa duração em pedaços gerenciáveis
Baixe Agora

Sub :: Fatia Classificação e resumo

Propaganda

  • Rating:
  • Licença:
  • GPL
  • Preço:
  • FREE
  • Nome do editor:
  • BBC
  • Site do editor:
  • http://www.bbc.co.uk

Sub :: Fatia Tag


Sub :: Fatia Descrição

Dividir tarefas de longo prazo em pedaços gerenciáveis SUB :: Slice é um módulo Perl que rompe um longo processo em pedaços menores que podem ser executados um de cada vez em um protocolo sem estado, como HTTP / SAP, para que o progresso possa ser relatado. Isso significa que o cliente pode exibir o progresso ou cancelar a operação parcialmente por meio do cliente solicitando um token do servidor e passando o token de volta para o servidor em cada iteração. O token passou para o cliente contém informações de status que o cliente pode usar para determinar se o trabalho foi concluído / falhou e exibir mensagens de status / erro. A rotina chamou a cada iteração, o servidor define um conjunto de coderefs, um dos quais será chamado para uma determinada iteração. Além disso, o servidor pode definir Coderefs para ser chamado no início e no final do trabalho. O servidor pode fornecer ao cliente uma estimativa do número de iterações que o trabalho provavelmente é possível. É possível equilibrar o desempenho / usabilidade, modificando o número de iterações que serão executadas antes de retornar o progresso para o cliente Client.synopsis # Assuma métodos no servidor :: O pacote é magicamente remotado meu $ token = server :: Create_token (); para (1 .. max_iterations) {servidor :: do_work ($ token); último se $ token -> {feito}; } # Servidor # Imagine isso está em um servidor de pacotes de máquina remota; use sub :: fatia; Sub Create_token {# Criar um novo trabalho: My $ job = New Sub :: Slice (backend => 'filesystem', storage_options => {path => '/ var / tmp / myproject /',}); retornar $ job-> token; } sub do_work {# carregando um trabalho existente: Meu $ job = New Sub: Slice (token => $ token backend => 'filesystem', storage_options => {path => '/ var / tmp / myproject /',} ); at_start $ trabalho sub {$ job-> loja ('foo', '1'); $ job-> Loja ('bar', {abc => 'def'}); # armazenar dados, inicializar $ job-> set_estimate (10); # Estimativa número de etapas retornam ($ job-> buscar ('foo')); }; meu $ foo = $ job-> buscar ('foo'); at_stage $ job "stage_one", sub {my $ bar = $ job-> buscar ('bar'); # fazer coisas $ job-> next_stage ('stage_two') se $ algum_condition; }; at_stage $ job "stage_two", sub {# ... faça mais coisas ... # Marque trabalho como pronto para ser excluído $ job-> feito () se $ job-> contagem () == $ job-> estimativa ( ); }; retornar $ job-> return_value (); #Pass de volta qualquer valor de retorno dos requisitos de Coderefs}: · Perl.


Sub :: Fatia Software Relacionado