Cette section présente 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 les algorithmes exécutés avec la méthode write()
, sont exécutées sous forme de processus. Les résultats de ces processus sont retournés au client une fois terminés et ne sont pas stockés.
top()
Récupère tous les processus en cours et arrêtés de l'instance.
Paramètres :
RequestConfig
(Optionnel) : Paramètres de configuration pour la requête.
Retourne :
List[Top]
: La liste de tous les processus dans l'instance.
# Récupère tous les processus en cours et arrêtés dans l'instance
processList = Conn.top()
for process in processList:
print("process_id: " + process.process_id)
print("process_uql: " + process.process_uql)
process_id: a_7_11229_2
process_uql: n({_uuid > 300}).e()[:3].n() as p RETURN p{*} LIMIT 500
kill()
Tue les processus en cours dans l'instance.
Paramètres :
str
: ID du processus à tuer ; définir sur*
pour tuer tous les processus.RequestConfig
(Optionnel) : Paramètres de configuration pour la requête.
Retourne :
UltipaResponse
: Résultat de la requête.
# Récupère tous les processus en cours et arrêtés dans l'instance et tue-les tous
processList = Conn.top()
for process in processList:
print("process_id:" + process.process_id)
print("process_uql:" + process.process_uql)
print("duration:" + process.duration)
print("status:" + process.status)
response = Conn.kill(processId = "*")
print(response.status.code)
process_id:a_4_11461_2
process_uql:n({_uuid > 300}).e()[:3].n() as p RETURN p{*} LIMIT 500
duration:2
status:RUNNING
0
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 contre 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 :
Union[int, str]
(Optionnel) : ID de la tâche (int
) ou nom de la tâche (str
).TaskStatus
(Optionnel) : Statut de la tâche. Si ce paramètre et les premiers paramètres sont définis, le premier paramètre prend la priorité.RequestConfig
(Optionnel) : Paramètres de configuration pour la requête.
Retourne :
List[Task]
: La liste de toutes les tâches dans le graphset.
requestConfig = RequestConfig(graphName="miniCircle")
# Exécute un algorithme comme tâche dans le graphset 'miniCircle'
response = Conn.uql("algo(degree).params({order: 'desc'}).write({file:{filename: 'degree_all'}})", requestConfig);
taskID = response.alias("_task").asTable().rows[0][0]
time.sleep(3)
# Récupère la tâche ci-dessus
tasksList = Conn.showTask(algoNameOrId=int(taskID), config=requestConfig)
#tasksList = Conn.showTask(algoNameOrId=str("degree"), status=TaskStatus.Done, config=requestConfig)
for task in tasksList:
print("Task ID:", task.task_info.task_id)
print("Server ID:", task.task_info.server_id)
print("Algo Name:", task.task_info.algo_name)
print("Task Status:", task.task_info.TASK_STATUS)
print("Task Params:", task.param)
print("Task Result:", task.result)
Task ID: 79686
Server ID: 1
Algo Name: degree
Task Status: 3
Task Params: {'order': 'desc'}
Task Result: {'total_degree': '1392.000000', 'avarage_degree': '4.578947', 'result_files': 'degree_all'}
clearTask()
Efface (supprime) les tâches du graphset actuel. Les tâches avec le statut COMPUTING
et WRITING
ne peuvent pas être effacées.
Paramètres :
Union[int, str]
(Optionnel) : ID de la tâche (int
) ou nom de la tâche (str
).TaskStatus
(Optionnel) : Statut de la tâche. Si ce paramètre et les premiers paramètres sont définis, le premier paramètre prend la priorité.RequestConfig
(Optionnel) : Paramètres de configuration pour la requête.
Retourne :
UltipaResponse
: Résultat de la requête.
requestConfig = RequestConfig(graphName="miniCircle")
# Exécute un algorithme comme tâche dans le graphset 'miniCircle'
response = Conn.uql("algo(degree).params({order: 'desc'}).write({file:{filename: 'degree_all'}})", requestConfig=requestConfig)
taskID = response.alias("_task").asTable().rows[0][0]
time.sleep(3)
# Efface la tâche ci-dessus
response1 = Conn.clearTask(algoNameOrId=int(taskID), config=requestConfig)
print(f"Task {taskID} cleared: {response1.status.code}")
Task 79687 cleared: 0
stopTask()
Arrête les tâches dont le statut est COMPUTING
dans le graphset actuel.
Paramètres :
str
: ID de la tâche à arrêter ; définir sur*
pour arrêter toutes les tâches.RequestConfig
(Optionnel) : Paramètres de configuration pour la requête.
Retourne :
UltipaResponse
: Résultat de la requête.
requestConfig = RequestConfig(graphName="miniCircle")
# Exécute un algorithme comme tâche dans le graphset 'miniCircle'
response = Conn.uql("algo(louvain).params({phase1_loop_num: 20, min_modularity_increase: 0.001})."
"write({file:{filename_community_id: 'communityID'}})", requestConfig)
taskID = response.alias("_task").asTable().rows[0][0]
time.sleep(3)
# Arrête la tâche ci-dessus et imprime le code d'erreur
response1 = Conn.stopTask(taskID, requestConfig)
print(f"Task {taskID} stopped: {response1.status.code}")
# Récupère la tâche arrêtée ci-dessus
task = Conn.showTask(algoNameOrId=int(taskID), config=requestConfig)
print("Task ID:", task[0].task_info.task_id)
print("Server ID:", task[0].task_info.server_id)
print("Algo Name:", task[0].task_info.algo_name)
print("Task Params:", task[0].param)
print("Task Result:", task[0].result)
Task 79689 stopped: 0
Task ID: 79689
Server ID: 2
Algo Name: louvain
Task Params: {'phase1_loop_num': '20', 'min_modularity_increase': '0.001'}
Task Result: {}
Exemple Complet
from ultipa import Connection, UltipaConfig, TaskStatus
from ultipa.configuration.RequestConfig import RequestConfig
import time
ultipaConfig = UltipaConfig()
# URI example: ultipaConfig.hosts = ["mqj4zouys.us-east-1.cloud.ultipa.com:60010"]
ultipaConfig.hosts = ["192.168.1.85:60061","192.168.1.87:60061","192.168.1.88:60061"]
ultipaConfig.username = "<username>"
ultipaConfig.password = "<password>"
Conn = Connection.NewConnection(defaultConfig=ultipaConfig)
# Configurations de la requête
requestConfig = RequestConfig(graphName="miniCircle")
# Exécute un algorithme comme tâche dans le graphset 'miniCircle'
response = Conn.uql("algo(degree).params({order: 'desc'}).write({file:{filename: 'degree_all'}})", requestConfig)
taskID = response.alias("_task").asTable().rows[0][0]
time.sleep(3)
# Récupère la tâche ci-dessus
task = Conn.showTask(algoNameOrId=int(taskID), config=requestConfig)
print("Task ID:", task[0].task_info.task_id)
print("Server ID:", task[0].task_info.server_id)
print("Algo Name:", task[0].task_info.algo_name)
print("Task Params:", task[0].param)
print("Task Result:", task[0].result)