# Trabajo con colas, tareas, recursos y registros

> A partir de la versión 1.27, todos los componentes de la plataforma admiten el acceso a colas, tareas, recursos y registros no solo mediante GUID, sino también mediante sus nombres (Name).

A continuación se presentan ejemplos de llamadas a recursos, tareas y registros del Orquestador. Estas solicitudes se pueden realizar desde el código del robot en Python según sea necesario.

```
import base64
import json
from requests.packages.urllib3.exceptions import InsecureRequestWarning
requests.packages.urllib3.disable_warnings(InsecureRequestWarning)
host = 'http://192.168.1.111:4500' #host del orquestador
robot_guid = 'da8bc2f0-8065-4385-b867-405e66b8e151' #GUID del robot
headers = {
    'Authorization': 'Basic ' + base64.b64encode(robot_guid.encode('utf-8')).decode('utf-8')
}

#Agregamos una nueva tarea a la cola de tareas '0cff3e77-78fc-405e-98c9-ef5076c0c883'
new_task = {
            'queue_guid': '0cff3e77-78fc-405e-98c9-ef5076c0c883',
            'name': 'Nueva tarea',
            'parameters': json.dumps({'query_id': '123', 'query_link': 'D:\CommonFolder\Packet123.zip', 'query_status': 'new', 'doc_type': 'PPT', 'doc_status': 'new'})
}
r = requests.post(host + '/api/task/create', data=new_task, headers=headers, verify=False)

#Para control, mostramos el resultado de la solicitud - GUID de la tarea creada
added_task = json.loads(r.text)
print('GUID de la tarea agregada: ', added_task ['guid'])

#Obtenemos la última tarea en la cola (sin filtros)
r = requests.get(host + '/api/queue/lastTask/0cff3e77-78fc-405e-98c9-ef5076c0c883', headers=headers, verify=False)
print('resultado de api/queue/lastTask', r)
print('    ', r.text)
new_task = json.loads(r.text)

#Directorio de estados de tareas
STATUS_NEW   = 0;    #Nueva tarea
STATUS_IN_PROGRESS  = 1;   #Tarea en progreso
STATUS_SUCCESS  = 2;    #Tarea completada con éxito
STATUS_FAILED  = 3; #Tarea fallida con Exception de Aplicación
STATUS_FAILED_BUSINESS  = 4; #Tarea fallida con Exception de Negocio
STATUS_POSTPONED   = 5;   #Tarea pospuesta hasta el tiempo especificado
STATUS_ABANDONED   = 6;  #Tarea abandonada (no procesada a tiempo)

#Actualizamos el estado de la tarea obtenida anteriormente
task_update = {
    'guid': new_task['guid'],
    'status': 1
}
r = requests.put(host + '/api/task/update', data=task_update, headers=headers, verify=False)
print('resultado de /api/task/update', r.text)

#Obtenemos el recurso (asset)
r = requests.get(host + '/api/asset/read/533daa45-8c3e-42ff-a5ae-b5023715d929', headers=headers, verify=False)
print('resultado de /api/asset/read/', r.text)
asset = json.loads(r.text)

#Actualizamos el recurso
asset_update = {
    'guid': asset['guid'],
    'name': 'nuevo nombre',  #Nombre del recurso
    'text': 'nuevo texto',  #Texto, inicio de sesión (para el tipo Credentials) o calendario serializado
    'password': 'nueva contraseña'  #Nueva contraseña
}
r = requests.put(host + '/api/asset/update', data=asset_update, headers=headers, verify=False)
print('resultado de /api/asset/update/', r.text)

#Agregamos un nuevo registro en el log
new_log = {
    'robot_guid': '9be0687d-4e00-4742-a53f-c9b622d076db',
    'process_version_guid': '4443fc75-4b55-41a2-bb61-9132b6e55d6b',
    'job_guid': '55056968-cb1b-4919-ad7b-9370c6e81e55',
    'level': 'Info',   #Valores permitidos 'Info', 'Critical', 'Error', 'Warning', 'Debug'
    'message': 'Nuevo mensaje'
}
r = requests.post(host + '/api/log/create', data=new_log, headers=headers, verify=False)
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.sherparpa.ru/es/sherpa-rpa/sherpa-orchestrator/python-sherpa-framework/rabota-s-ocheredyami-zadachami-resursami-i-logami.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
