Cette section présente les méthodes d'un objet Connection
pour gérer les processus dans l'instance et les tâches dans le graphset actuel.
Chaque exemple se concentre uniquement sur l'utilisation de la méthode. Pour un exemple de code complet, veuillez vous référer à l'exemple complet.
Processus
Toutes les requêtes UQL, à l'exception des algorithmes exécutés avec la méthode write()
, sont exécutées en tant que processus. Les résultats de ces processus sont renvoyés au client à la fin et ne sont pas stockés.
Top()
Récupère tous les processus en cours d'exécution et d'arrêt de l'instance.
Paramètres :
RequestConfig
(Optionnel) : Paramètres de configuration pour la requête. Sinil
est fourni, la fonction utilisera les paramètres de configuration par défaut.
Retours :
[]Top
: La liste de tous les processus dans l'instance.error
: Un objet d'erreur contenant des détails sur les problèmes survenus.nil
est retourné si l'opération est réussie.
// Récupère tous les processus en cours d'exécution et d'arrêt dans l'instance
requestConfig := &configuration.RequestConfig{
UseMaster: true,
}
myProcess, err := conn.Top(requestConfig)
if err != nil {
println(err)
}
println(utils.JSONString(myProcess))
[{"process_id":"a_4_12573_2","status":"RUNNING","process_uql":"n().e().n().e().n().e().n() as p return count(p)","duration":"48"}]
Kill()
Interrompt les processus en cours d'exécution dans l'instance.
Paramètres :
string
: ID du processus à tuer ; défini sur*
pour tuer tous les processus.bool
: Définir sur true pour ignorer l'ID de processus et tuer tous les processus.RequestConfig
(Optionnel) : Paramètres de configuration pour la requête. Sinil
est fourni, la fonction utilisera les paramètres de configuration par défaut.
Retours :
Response
: Résultat de la requête.error
: Un objet d'erreur contenant des détails sur les problèmes survenus.nil
est retourné si l'opération est réussie.
// Récupère tous les processus en cours d'exécution et d'arrêt dans l'instance et tue tous
myProcess, err := conn.Kill("*", true, nil)
if err != nil {
println(err)
}
println("Operation succeeds:", myProcess.IsSuccess())
Operation succeeds: true
Tâche
Les algorithmes exécutés avec la méthode write()
sont exécutés en tant que tâches. Ces tâches sont stockées dans le graphset pour lequel elles sont exécutées jusqu'à ce qu'elles soient supprimées.
ShowTask()
Récupère les tâches du graphset actuel.
Paramètres :
string
: Nom de l'algorithme ou l'ID de la tâche à récupérer.TaskStatus
: Statut de la tâche.RequestConfig
(Optionnel) : Paramètres de configuration pour la requête. Sinil
est fourni, la fonction utilisera les paramètres de configuration par défaut.
Retours :
[]Task
: La liste de toutes les tâches dans le graphset.error
: Un objet d'erreur contenant des détails sur les problèmes survenus.nil
est retourné si l'opération est réussie.
requestConfig := &configuration.RequestConfig{
UseMaster: true,
GraphName: "miniCircle",
}
// Exécute un algorithme en tant que tâche dans le graphset 'miniCircle'
_, err1 := conn.Uql("algo(louvain).params({phase1_loop_num: 20, min_modularity_increase: 0.001}).write({file:{filename_community_id: 'communityID', filename_ids: 'ids', filename_num: 'num'}})",
requestConfig)
if err1 != nil {
println(err1)
}
time.Sleep(5 * time.Second)
// Récupère la tâche ci-dessus et affiche les informations de la tâche
myTask, _ := conn.ShowTask("louvain", structs.TaskStatusDone, requestConfig)
println("TaskID:", myTask[0].TaskInfo.TaskID)
println("Algo name:", myTask[0].TaskInfo.AlgoName)
println("Task result:", utils.JSONString(myTask[0].Result))
TaskID: 65843
Algo name: louvain
Task result: {"community_count":"10","modularity":"0.528182","result_files":"communityID,ids,num"}
ClearTask()
Efface (supprime) les tâches du graphset actuel. Les tâches avec le statut TaskStatusComputing
et TaskStatusWriting
ne peuvent pas être effacées.
Paramètres :
string
: Nom de l'algorithme ou l'ID de la tâche à récupérer.TaskStatus
: Statut de la tâche.RequestConfig
(Optionnel) : Paramètres de configuration pour la requête. Sinil
est fourni, la fonction utilisera les paramètres de configuration par défaut.
Retours :
Response
: Résultat de la requête.error
: Un objet d'erreur contenant des détails sur les problèmes survenus.nil
est retourné si l'opération est réussie.
requestConfig := &configuration.RequestConfig{
UseMaster: true,
GraphName: "miniCircle",
}
// Exécute un algorithme en tant que tâche dans le graphset 'miniCircle'
_, err := conn.Uql("algo(degree).params({order: 'desc'}).write({file:{filename: 'degree_all'}})",
requestConfig)
if err != nil {
println(err)
}
time.Sleep(1 * time.Second)
// Efface la tâche ci-dessus et imprime le code d'erreur
myTask, _ := conn.ShowTask("degree", structs.TaskstatusAll, requestConfig)
myTaskID := myTask[0].TaskInfo.TaskID
println("TaskID is:", myTaskID)
tClear, _ := conn.ClearTask(utils.JSONString(myTaskID), structs.TaskStatusDone, requestConfig)
println("Task cleared:", tClear.IsSuccess())
TaskID is: 65874
Task cleared: true
StopTask()
Arrête les tâches dont le statut est COMPUTING
dans le graphset actuel.
Paramètres :
string
: ID de la tâche à arrêter ; défini sur*
pour arrêter toutes les tâches.RequestConfig
(Optionnel) : Paramètres de configuration pour la requête. Sinil
est fourni, la fonction utilisera les paramètres de configuration par défaut.
Retours :
Response
: Résultat de la requête.error
: Un objet d'erreur contenant des détails sur les problèmes survenus.nil
est retourné si l'opération est réussie.
requestConfig := &configuration.RequestConfig{
UseMaster: true,
GraphName: "miniCircle",
}
// Exécute un algorithme en tant que tâche dans le graphset 'miniCircle'
_, err := conn.Uql("algo(louvain).params({phase1_loop_num: 20, min_modularity_increase: 0.001}).write({file:{filename_community_id: 'communityID'}})",
requestConfig)
if err != nil {
println(err)
}
// Arrête la tâche ci-dessus et imprime le code d'erreur
myTask, _ := conn.ShowTask("louvain", structs.TaskstatusAll, requestConfig)
myTaskID := myTask[0].TaskInfo.TaskID
println("TaskID is:", myTaskID)
// Récupère la tâche arrêtée ci-dessus
tStop, _ := conn.StopTask(utils.JSONString(myTaskID), requestConfig)
println("Task is stopped:", tStop.IsSuccess())
TaskID is: 65886
Task is stopped: true
Exemple Complet
package main
import (
"time"
"github.com/ultipa/ultipa-go-sdk/sdk"
"github.com/ultipa/ultipa-go-sdk/sdk/configuration"
"github.com/ultipa/ultipa-go-sdk/sdk/structs"
"github.com/ultipa/ultipa-go-sdk/utils"
)
func main() {
// Configurations de connexion
//Exemple URI: Hosts:=[]string{"mqj4zouys.us-east-1.cloud.ultipa.com:60010"}
config, _ := configuration.NewUltipaConfig(&configuration.UltipaConfig{
Hosts: []string{"192.168.1.85:60061", "192.168.1.86:60061", "192.168.1.87:60061"},
Username: "***",
Password: "***",
})
// Établit la connexion à la base de données
conn, _ := sdk.NewUltipa(config)
// Configurations de requête
requestConfig := &configuration.RequestConfig{
UseMaster: true,
GraphName: "miniCircle",
}
// Exécute un algorithme en tant que tâche dans le graphset 'miniCircle'
_, err1 := conn.Uql("algo(louvain).params({phase1_loop_num: 20, min_modularity_increase: 0.001}).write({file:{filename_community_id: 'communityID', filename_ids: 'ids', filename_num: 'num'}})",
requestConfig)
if err1 != nil {
println(err1)
}
time.Sleep(5 * time.Second)
// Récupère la tâche ci-dessus
myTask, _ := conn.ShowTask("louvain", structs.TaskStatusDone, requestConfig)
println("TaskID:", myTask[0].TaskInfo.TaskID)
println("Algo name:", myTask[0].TaskInfo.AlgoName)
println("Task result:", utils.JSONString(myTask[0].Result))
};