Cette section introduit des méthodes sur 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, sauf pour les 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 une fois terminés et ne sont pas stockés.
Top()
Récupère tous les processus en cours d'exécution et en arrêt dans l'instance.
Paramètres :
RequestConfig
(Optionnel) : Paramètres de configuration pour la requête.
Renvoie :
List<Process>
: La liste de tous les processus dans l'instance.
// Récupère tous les processus en cours d'exécution et en arrêt dans l'instance
RequestConfig requestConfig = new RequestConfig() { UseMaster = true };
var processList = await ultipa.Top(requestConfig);
Console.WriteLine(JsonConvert.SerializeObject(processList));
[{"Id":"a_7_33_2","Uql":"n().e().n().e().n().e().n() as p return count(p)","Duration":73,"Status":"RUNNING"}]
Kill()
Interrompt les processus en cours d'exécution dans l'instance.
Paramètres :
string
: ID du processus à tuer ; définissez-le sur*
pour tuer tous les processus.RequestConfig
(Optionnel) : Paramètres de configuration pour la requête.
Renvoie :
Response
: Résultat de la requête.
// Récupère tous les processus en cours d'exécution et en arrêt dans l'instance et tue tous
RequestConfig requestConfig = new RequestConfig() { UseMaster = true };
var processList = await ultipa.Top(requestConfig);
foreach (var process in processList)
{
Console.WriteLine("Process ID: " + process.Id);
Console.WriteLine("UQL: " + process.Uql);
}
Thread.Sleep(1000);
var res = await ultipa.Kill("*", requestConfig);
if (res.Status.ErrorCode == 0)
{
Console.WriteLine("Opération réussie");
}
Process ID: a_6_41_2
UQL: n().e().n().e().n().e().n() as p return count(p)
Opération réussie
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 sur 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
ouint
: Nom de l'algorithme (string
) ou l'ID de la tâche (int
) à récupérer.TaskStatus
(Optionnel) : Statut de la tâche.RequestConfig
(Optionnel) : Paramètres de configuration pour la requête.
Renvoie :
List<Task>
: La liste de toutes les tâches dans le graphset.
RequestConfig requestConfig = new RequestConfig()
{
UseMaster = true,
Graph = "miniCircle",
};
// Exécute un algorithme en tant que tâche dans le graphset 'miniCircle'
var res = await ultipa.Uql(
"algo(degree).params({order: 'desc'}).write({file:{filename: 'degree_all'}})",
requestConfig
);
var taskID = Convert.ToInt32(res?.Alias("_task")?.AsTable()?.Rows[0][0]);
Thread.Sleep(5000);
// Récupère la tâche ci-dessus et affiche les informations de la tâche
var showT = await ultipa.ShowTask(taskID, requestConfig);
Console.WriteLine("Task ID: " + JsonConvert.SerializeObject(showT[0].Info.TaskId));
Console.WriteLine("Algo name: " + JsonConvert.SerializeObject(showT[0].Info.AlgoName));
Console.WriteLine("Task result: " + JsonConvert.SerializeObject(showT[0].result));
Task ID: "72122"
Algo name: "degree"
Task result: {"total_degree":"1390.000000","avarage_degree":"4.572368","result_files":"degree_all"}
ClearTask()
Efface (supprime) les tâches du graphset actuel. Les tâches dont le statut est TaskStatusComputing
et TaskStatusWriting
ne peuvent pas être effacées.
Paramètres :
string
ouint
: Nom de l'algorithme (string
) ou l'ID de la tâche (int
) à récupérer.TaskStatus
: Statut de la tâche.RequestConfig
(Optionnel) : Paramètres de configuration pour la requête.
Renvoie :
Response
: Résultat de la requête.
RequestConfig requestConfig = new RequestConfig()
{
UseMaster = true,
Graph = "miniCircle",
};
// Exécute un algorithme en tant que tâche dans le graphset 'miniCircle'
var res = await ultipa.Uql(
"algo(degree).params({order: 'desc'}).write({file:{filename: 'degree_all'}})",
requestConfig
);
var taskID = Convert.ToInt32(res?.Alias("_task")?.AsTable()?.Rows[0][0]);
Thread.Sleep(5000);
// Efface la tâche ci-dessus et imprime le code d'erreur
var clearT = await ultipa.ClearTask(taskID, requestConfig);
Console.WriteLine("Task ID: " + taskID);
if (clearT.Status.ErrorCode == 0)
{
Console.WriteLine("Tâche effacée");
}
else
{
Console.WriteLine("Tâche non effacée");
}
Task ID: 72124
Tâche effacée
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éfinissez-le sur*
pour arrêter toutes les tâches.RequestConfig
(Optionnel) : Paramètres de configuration pour la requête.
Renvoie :
Response
: Résultat de la requête.
RequestConfig requestConfig = new RequestConfig()
{
UseMaster = true,
Graph = "miniCircle",
};
// Exécute un algorithme en tant que tâche dans le graphset 'miniCircle'
var res = await ultipa.Uql(
"algo(degree).params({order: 'desc'}).write({file:{filename: 'degree_all'}})",
requestConfig
);
var taskID = Convert.ToString(res?.Alias("_task")?.AsTable()?.Rows[0][0]);
// Arrête la tâche ci-dessus et imprime le code d'erreur
var stopT = await ultipa.StopTask(taskID, requestConfig);
Console.WriteLine("Task ID: " + taskID);
Console.WriteLine("La tâche est arrêtée: " + stopT.Status.ErrorCode);
Task ID: 72126
La tâche est arrêtée: Success
Exemple Complet
using System.Data;
using System.Security.Cryptography.X509Certificates;
using System.Xml.Linq;
using Google.Protobuf.WellKnownTypes;
using Microsoft.Extensions.Logging;
using Newtonsoft.Json;
using UltipaService;
using UltipaSharp;
using UltipaSharp.api;
using UltipaSharp.configuration;
using UltipaSharp.connection;
using UltipaSharp.exceptions;
using UltipaSharp.structs;
using UltipaSharp.utils;
using Logger = UltipaSharp.utils.Logger;
using Property = UltipaSharp.structs.Property;
using Schema = UltipaSharp.structs.Schema;
class Program
{
static async Task Main(string[] args)
{
// Configurations de connexion
//URI example: Hosts=new[]{"mqj4zouys.us-east-1.cloud.ultipa.com:60010"}
var myconfig = new UltipaConfig()
{
Hosts = new[] { "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
var ultipa = new Ultipa(myconfig);
var isSuccess = ultipa.Test();
Console.WriteLine(isSuccess);
// Configurations de requête
RequestConfig requestConfig = new RequestConfig()
{
UseMaster = true,
Graph = "miniCircle",
};
// Exécute un algorithme en tant que tâche dans le graphset 'miniCircle'
var res = await ultipa.Uql(
"algo(degree).params({order: 'desc'}).write({file:{filename: 'degree_all'}})",
requestConfig
);
var taskID = Convert.ToInt32(res?.Alias("_task")?.AsTable()?.Rows[0][0]);
Thread.Sleep(5000);
// Récupère la tâche ci-dessus et affiche les informations de la tâche
var showT = await ultipa.ShowTask(taskID, requestConfig);
Console.WriteLine("Task ID: " + JsonConvert.SerializeObject(showT[0].Info.TaskId));
Console.WriteLine("Server ID: " + JsonConvert.SerializeObject(showT[0].Info.ServerId));
Console.WriteLine("Algo name: " + JsonConvert.SerializeObject(showT[0].Info.AlgoName));
Console.WriteLine("Task result: " + JsonConvert.SerializeObject(showT[0].result));
}
}