Spaces:
Running
Running
File size: 2,218 Bytes
a7c2cd2 32c2587 f039650 32c2587 f039650 32c2587 f039650 32c2587 f039650 32c2587 f039650 32c2587 f039650 48225dd f039650 32c2587 f039650 32c2587 b888aa1 f039650 b888aa1 f039650 32c2587 48225dd f039650 b888aa1 32c2587 a7c2cd2 32c2587 6020a54 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 |
import os
from queue import Queue
import argilla as rg
import gradio as gr
client = rg.Argilla()
server = rg.get_webhook_server()
incoming_events = Queue()
# Set up the webhook listeners
# Delete all existing webhooks
for webhook in client.webhooks:
webhook.delete()
# Create a webhook for record events
@rg.webhook_listener(
events=["record.created", "record.updated", "record.completed"],
raw_event=True # Using raw events until PR https://github.com/argilla-io/argilla/pull/5500 is merged
)
async def record_events(event:dict):
print("Received event", event)
incoming_events.put(event)
# Create a webhook for dataset events
@rg.webhook_listener(events=["dataset.created", "dataset.updated", "dataset.published"])
async def dataset_events(type: str, dataset: rg.Dataset | None = None, **kwargs):
print(f"Received event {type} for dataset {dataset.id}")
incoming_events.put((type, dataset))
# Create a webhook for response events
@rg.webhook_listener(
events=["response.created", "response.updated"],
raw_event=True # Using raw events until PR https://github.com/argilla-io/argilla/pull/5500 is merged
)
async def response_events(event: dict):
print("Received event", event)
incoming_events.put(event)
@rg.webhook_listener(events=["record.deleted", "dataset.deleted", "response.deleted"])
async def deleted_events(type: str, data: dict, **kwargs):
print(f"Received event {type} for resource {data}")
incoming_events.put((type, data))
def check_incoming_events():
"""
This function is called every 5 seconds to check if there are any incoming
events and send data to update the JSON component.
"""
events = []
while not incoming_events.empty():
events.append(incoming_events.get())
return {"events": events}
with gr.Blocks() as demo:
argilla_server = client.http_client.base_url
gr.Markdown("## Argilla Events")
gr.Markdown(f"This demo shows the incoming events from the [Argilla Server]({argilla_server}).")
json_component = gr.JSON(label="Incoming argilla events:")
gr.Timer(5, active=True).tick(check_incoming_events, outputs=json_component)
gr.mount_gradio_app(server, demo, path="/")
|