Módulo google.appengine.ext.deferred.deferred

Resumo

Um módulo para o gerenciamento da execução adiada de chamáveis (callable) por meio da fila de tarefas.

As tarefas consistem em um chamável e argumentos a serem transmitidos a ele. O chamável e seus argumentos são serializados e colocados na fila de tarefas, onde são desserializados e executados. Os seguintes chamáveis podem ser usados como tarefas:

  1. Funções definidas no nível superior de um módulo.

  2. Classes definidas no nível superior de um módulo.

  3. Instâncias de classes em (2) em que __call__ é implementado.

  4. Métodos de instância de objetos de classes em (2).

  5. Métodos de classes em (2).

  6. Funções integradas.

  7. Métodos integrados.

Os seguintes chamáveis NÃO podem ser usados como tarefas: 1) Funções ou "closures" aninhados. 2) Classes aninhadas ou objetos delas. 3) Funções Lambda. 4) Métodos estáticos.

Os argumentos para o chamável e o objeto (no caso de chamadas de método ou objeto) precisam ser todos selecionáveis.

Se você quiser que as tarefas sejam executadas de forma confiável, não use variáveis globais mutáveis. Elas não são serializadas com a tarefa e podem não ser as mesmas quando a tarefa é executada como era quando foi enfileirada. Na verdade, elas quase sempre estarão diferentes.

Se o aplicativo depende da manipulação do caminho de importação, verifique se a função que você está adiando está definida em um módulo que pode ser encontrado sem a manipulação do caminho de importação. Você tem a opção de incluir deferred.TaskHandler no próprio aplicativo webapp em vez de usar o método de instalação fácil detalhado abaixo.

Quando você cria uma tarefa adiada usando deferred.defer, a tarefa é serializada e é feita uma tentativa de adicioná-la diretamente à fila de tarefas. Se a tarefa for muito grande, com mais que cerca de 10 kilobytes quando serializada, uma entrada do armazenamento de dados será criada para a tarefa, e será enfileirada uma nova tarefa que buscará a original no armazenamento de dados e a executará. Isso é muito menos eficiente do que o modelo de execução direta. Por isso, é uma boa ideia minimizar o tamanho das tarefas, quando possível.

Para que as tarefas sejam processadas, você precisa configurar o gerenciador. Adicione o seguinte à seção de gerenciadores app.yaml:

gerenciadores: - url: /_ah/queue/deferred

script: $PYTHON_LIB/google/appengine/ext/deferred/handler.py login: admin

Por padrão, o URL acima e a fila padrão são usados pelo módulo adiado.

Exemplo de uso:

def do_something_later(key, amount):

entity = MyModel.get(key) entity.total += amount entity.put()

# Use o URL e o nome da fila padrão, nenhum nome de tarefa, executar o mais rápido possível. deferred.defer (do_something_later, my_key, 20)

# Como oferecer argumentos de fila de tarefas não padrão deferred.defer(do_something_later, my_key, 20, _queue=”foo”, _countdown=60)

Índice

exception google.appengine.ext.deferred.deferred.Errorsource

Bases: exceptions.Exception

Classe base para exceções neste módulo.

exception google.appengine.ext.deferred.deferred.PermanentTaskFailuresource

Bases: google.appengine.ext.deferred.deferred.Error

Indicação de que houve falha em uma tarefa, que nunca será executada com sucesso.

exception google.appengine.ext.deferred.deferred.SingularTaskFailuresource

Bases: google.appengine.ext.deferred.deferred.Error

Indicação de que houve uma falha na tarefa.

class google.appengine.ext.deferred.deferred.TaskHandlersource

Bases: google.appengine.ext.webapp._webapp25.RequestHandler

Uma classe de gerenciador de webapp para processamento de invocações adiadas.

post()source
run_from_request()source

Comportamento padrão de solicitações POST para o gerenciador adiado.

google.appengine.ext.deferred.deferred.defer(obj, *args, **kwargs)source

Adiamento de um chamável para execução posterior.

O URL padrão adiado de /_ah/queue/deferred será usado, a menos que um URL alternativo seja explicitamente especificado. Se você quiser usar o URL padrão de uma fila, especifique_url=None. Se você especificar um URL diferente, será necessário instalar o gerenciador nesse URL (para detalhes, veja o docstring do módulo).

Parâmetros
  • obj – o chamável a ser executado. Para informações sobre restrições, veja o docstring do módulo. _countdown, _eta, _headers, _name, _target, _transactional, _url, _retry_options, _queue: transmitido para a fila de tarefas – para detalhes, veja a documentação da fila de tarefas.

  • args – argumentos de posicionamento para execução da chamada.

  • kwargs – qualquer outro argumento de palavra-chave é transmitido para o chamável.

Retorna

Um objeto taskqueue.Task que representa um chamável enfileirado.

google.appengine.ext.deferred.deferred.invoke_member(obj, membername, *args, **kwargs)source

Recuperação de um membro de um objeto, que é então chamado com os argumentos fornecidos.

Parâmetros
  • obj – o objeto a ser operado.

  • membername – nome do membro a ser recuperado do obj.

  • args – argumentos de posição a serem transmitidos para o método.

  • kwargs – argumentos de palavras-chave a serem transmitidos para o método.

Retorna

O valor de retorno da invocação do método.

google.appengine.ext.deferred.deferred.main()source
google.appengine.ext.deferred.deferred.run(data)source

Desserialização e execução de uma tarefa.

Parâmetros

data – uma tupla serializada de (função, args, kwargs) a ser executada.

Retorna

O valor de retorno da invocação da função.

google.appengine.ext.deferred.deferred.run_from_datastore(key)source

Recuperação e execução de uma tarefa do armazenamento de dados.

Parâmetros

key – a chave do armazenamento de dados de um _DeferredTaskEntity onde a tarefa é armazenada.

Retorna

O valor de retorno da invocação da função.

google.appengine.ext.deferred.deferred.serialize(obj, *args, **kwargs)source

Serialização de um chamável em um formato reconhecido pelo executor adiado.

Parâmetros
  • obj – o chamável a ser serializado. Para informações sobre restrições, veja o docstring do módulo.

  • args – argumentos de posicionamento para execução da chamada.

  • kwargs – argumentos de palavras-chave para a chamada.

Retorna

Uma representação serializada do chamável.

google.appengine.ext.deferred.deferred.set_log_level(log_level)source

Definição do registro em que o nível adiado será registrado em circunstâncias normais.

Parâmetros

log_level – um dos níveis de registro, por exemplo, logging.DEBUG, logging.INFO etc.

Esta página foi útil? Conte sua opinião sobre:

Enviar comentários sobre…

Ambiente padrão do App Engine para Python 2