Tous les produits
Search
Centre de documentation

MaxCompute:Instances de tâche

Dernière mise à jour :Aug 21, 2026

Une tâche, telle qu'une tâche SQL, constitue l'unité de calcul de base dans MaxCompute. Cette rubrique décrit les opérations de base sur les instances de tâche dans PyODPS.

Opérations de base

Lorsqu'une tâche s'exécute, elle est instanciée sous la forme d'une instance MaxCompute, également appelée instance. Voici les opérations courantes applicables aux instances :

  • list_instances() : Récupère toutes les instances d'un projet.

  • exist_instance() : Vérifie si une instance existe.

  • get_instance() : Récupère une instance.

  • stop_instance() : Arrête une instance. Vous ne pouvez arrêter que les instances en cours d'exécution. Une erreur survient si vous tentez d'arrêter une instance dans un autre état.

    Remarque

    L'appel de la méthode stop sur un objet Instance arrête également l'instance. Par exemple : o.get_instance('instance id').stop.

Exemples

  • Récupération de l'ID d'une instance

    for instance in o.list_instances():
        print(instance.id)
  • Vérification de l'existence d'une instance

    print(o.exist_instance('my_instance_id'))

Obtention de l'adresse Logview

  • Pour les tâches telles que les tâches SQL, appelez la méthode get_logview_address sur un objet Instance afin de récupérer l'adresse 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())
  • Pour les tâches PAI, énumérez d'abord les sous-tâches, puis récupérez l'adresse Logview pour chacune d'elles.

    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()))

État des instances de tâche

L'état d'une instance peut être Running, Suspended ou Terminated. Les méthodes suivantes concernent l'état de l'instance :

  • status : Propriété permettant de récupérer l'état.

  • is_terminated : Indique si l'instance a terminé son exécution.

  • is_successful : Indique si l'instance s'est exécutée avec succès. Elle renvoie False si la tâche est en cours d'exécution ou a échoué.

Le code suivant illustre ces opérations.

  • Récupération de l'état d'une instance.

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

    Exemples de valeurs de retour :

    Status.TERMINATED
    Terminated
  • Vérification de la fin d'exécution de l'instance actuelle.

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

    Une valeur de retour égale à True indique que l'instance a terminé son exécution.

Remarque

L'appel de la méthode wait_for_completion bloque le processus jusqu'à ce que l'instance termine son exécution. La méthode wait_for_success bloque également le processus, mais lève une exception si la tâche échoue.

Opérations sur les sous-tâches

Une instance peut contenir une ou plusieurs sous-tâches lors de l'exécution. Ces sous-tâches sont également appelées tâches. Notez que cette Task diffère de l'unité de calcul de base dans MaxCompute. Les méthodes suivantes sont disponibles pour ces tâches :

  • get_task_names : Récupère les noms de toutes les sous-tâches. Cette méthode renvoie une liste des noms.

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

    Exemple de valeur de retour :

    ['jdbc_sql_task']
  • get_task_result : Récupère le résultat d'exécution d'une tâche spécifiée. Cette méthode renvoie le résultat d'exécution de chaque tâche sous forme de dictionnaire. Le code suivant illustre cette opération :

    • Récupération du nom de la sous-tâche.

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

      Exemple de valeur de retour :

      ['AnonymousSQLTask']
    • Récupération du résultat d'exécution de la sous-tâche.

      print(instance.get_task_result('AnonymousSQLTask'))

      Exemple de valeur de retour :

      "sepallength","sepalwidth","petallength","petalwidth","name"
      4.9,3.0,1.4,0.2,"Iris-setosa"
    • Récupération des résultats des sous-tâches.

      print(instance.get_task_results())

      Exemple de valeur de retour :

      OrderedDict([('AnonymousSQLTask', '"sepallength","sepalwidth","petallength","petalwidth","name"\n4.9,3.0,1.4,0.2,"Iris-setosa"\n')])
  • get_task_progress : Récupère la progression actuelle d'une tâche pendant l'exécution de l'instance.

    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)

    Exemple de valeur de retour :

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