Todos os produtos
Search
Central de documentação

MaxCompute:Instâncias de tarefas

Última atualização: Aug 21, 2026

Uma tarefa, como uma tarefa SQL, é a unidade básica de computação no MaxCompute. Este tópico descreve as operações básicas para instâncias de tarefas no PyODPS.

Operações básicas

Ao executar uma tarefa, o sistema a instancia como uma instância do MaxCompute, também chamada apenas de instância. As operações comuns para instâncias incluem:

  • list_instances(): Lista todas as instâncias em um projeto.

  • exist_instance(): Verifica se uma instância existe.

  • get_instance(): Obtém uma instância específica.

  • stop_instance(): Interrompe uma instância. É possível interromper apenas instâncias em execução. O sistema retorna um erro ao tentar interromper uma instância em qualquer outro status.

    Nota

    Chamar o método stop em um objeto Instance também interrompe a instância. Exemplo: o.get_instance('instance id').stop.

Exemplos

  • Obter o ID de uma instância

    for instance in o.list_instances():
        print(instance.id)
  • Verificar se uma instância existe

    print(o.exist_instance('my_instance_id'))

Obter o endereço do Logview

  • Para tarefas como SQL, chame o método get_logview_address em um objeto Instance para obter o endereço do Logview.

    # Get the Logview address from an existing instance object.
    instance = o.run_sql('desc pyodps_iris')
    print(instance.get_logview_address())
    
    # Get the Logview address from an instance ID.
    instance = o.get_instance('my_instance_id')
    print(instance.get_logview_address())
  • Para tarefas do PAI, enumere primeiro as subtarefas e depois obtenha o endereço do Logview de cada uma.

    instance = o.run_xflow('AppendID', 'algo_public', {'inputTableName': 'input_table', 'outputTableName': 'output_table'})
    for sub_inst_name, sub_inst in o.get_xflow_sub_instances(instance).items():
        print('%s: %s' % (sub_inst_name, sub_inst.get_logview_address()))

Status da instância de tarefa

O status de uma instância pode ser Running, Suspended ou Terminated. Os métodos a seguir referem-se ao status da instância:

  • status: Propriedade que obtém o status atual.

  • is_terminated: Indica se a instância terminou a execução.

  • is_successful: Informa se a instância foi executada com sucesso. Retorna False se a tarefa estiver em execução ou tiver falhado.

Os exemplos de código a seguir demonstram o uso desses métodos.

  • Obter o status de uma instância.

    instance=o.get_instance('my_instance_id')
    print(instance.status)
    print(instance.status.value)

    Valores de retorno de exemplo:

    Status.TERMINATED
    Terminated
  • Verificar se a instância atual terminou a execução.

    instance=o.get_instance('my_instance_id')
    from odps.models import Instance
    print(instance.status == Instance.Status.TERMINATED)

    Um valor de retorno True indica que a instância concluiu a execução.

Nota

A chamada ao método wait_for_completion bloqueia o processo até que a instância termine a execução. O método wait_for_success também bloqueia o processo, mas lança uma exceção se a tarefa falhar.

Operações de subtarefas

Durante a execução, uma instância pode conter uma ou mais subtarefas, também chamadas de tarefas. Observe que essa Task difere da unidade básica de computação do MaxCompute. Os seguintes métodos estão disponíveis para essas tarefas:

  • get_task_names: Obtém os nomes de todas as subtarefas e retorna uma lista com eles.

    instance=o.get_instance('my_instance_id')
    instance.get_task_names()

    Valor de retorno de exemplo:

    ['jdbc_sql_task']
  • get_task_result: Obtém o resultado da execução de uma tarefa especificada. O método retorna o resultado de cada tarefa em formato de dicionário. Veja os exemplos de código abaixo:

    • Obter o nome da subtarefa.

      instance=o.execute_sql('select*frompyodps_irislimit1')
      print(instance.get_task_names())

      Valor de retorno de exemplo:

      ['AnonymousSQLTask']
    • Consultar o resultado da execução da subtarefa.

      print(instance.get_task_result('AnonymousSQLTask'))

      Valor de retorno de exemplo:

      "sepallength","sepalwidth","petallength","petalwidth","name"
      4.9,3.0,1.4,0.2,"Iris-setosa"
    • Listar os resultados das subtarefas.

      print(instance.get_task_results())

      Valor de retorno de exemplo:

      OrderedDict([('AnonymousSQLTask', '"sepallength","sepalwidth","petallength","petalwidth","name"\n4.9,3.0,1.4,0.2,"Iris-setosa"\n')])
  • get_task_progress: Monitora o progresso atual de uma tarefa enquanto a instância está em execução.

    instance=o.get_instance('20160519101349613gzbzufck2')
    while not instance.is_terminated():
        for task_name in instance.get_task_names():
            print(instance.id, instance.get_task_progress(task_name).get_stage_progress_formatted_string())
            time.sleep(10)

    Valor de retorno de exemplo:

    20160519101349613gzbzufck2 2016-05-19 18:14:03 M1_Stg1_job0:0/1/1[100%]