Datapool¶
La funcionalidad de Datapool se puede utilizar como una forma de gestionar el procesamiento por lotes.
En esta sección, verás más detalles sobre cómo interactuar con esta característica de BotCity Maestro a través de tu código de automatización.
Tip
Consulta más detalles sobre cómo crear un Datapool y agregar nuevos elementos a través de la interfaz de Maestro accediendo a este enlace.
Consumir elementos de un Datapool¶
El primer paso es obtener la referencia del Datapool a través de su identificador único (etiqueta).
Después de obtener la referencia del Datapool, podemos usar un bucle repetitivo para verificar mientras haya elementos que se deban procesar.
# Consuming the next available item and reporting the finishing state at the end
datapool = maestro.get_datapool(label="Items-To-Process")
while datapool.has_next():
# Fetch the next Datapool item
item = datapool.next(task_id=execution.task_id)
if item is None:
# Item could be None if another process consumed it before
break
# Processing item...
# Finishing as 'DONE' after processing
item.report_done()
Warning
Recuerda siempre incluir en el código el informe sobre el estado de finalización del elemento que se procesó.
Esto es extremadamente importante para que los estados de los elementos se actualicen dentro del Datapool en Maestro.
Manipulación de un elemento de Datapool¶
Además de informar el estado de finalización de un elemento, podemos realizar otras operaciones en el código.
Es posible obtener información sobre el elemento, así como datos específicos basados en el Esquema que se creó.
Operaciones de Datapool¶
A través del SDK de Maestro, podemos realizar otras operaciones con el Datapool además de verificar y consumir los elementos que se deben procesar.
# Getting the Datapool reference
datapool = maestro.get_datapool("ProductsData")
# Checking if the Datapool is active
print(datapool.is_active())
# Checking if the Datapool is empty
print(datapool.is_empty())
# Marking the Datapool as active
datapool.activate()
# Marking the Datapool as inactive
datapool.deactivate()
Agregar nuevos elementos¶
Podemos agregar nuevos elementos al Datapool utilizando el SDK de Maestro.
Tip
Este método puede ser útil si deseas utilizar un script de Python para poblar el Datapool con los elementos que se procesarán.
# Instantiating a new Datapool item based on the Schema that has been defined
new_item = DataPoolEntry(
values={
"product_name": "Smartphone",
"product_category": "Electronic",
"product_value": "2000"
}
)
# Getting the Datapool reference
datapool = maestro.get_datapool("ProductsData")
# Adding a new item
datapool.create_entry(new_item)