4. Live datasource streaming
Wanneer gebruik je dit?
- Gebruik dit als een Element tijdens de run al widget-data moet tonen of vervangen.
- Dit werkt via een datasource met connector type
element en Default data format = Live stream, of direct via een gepubliceerd Element van type stream_data.
- De equivalente raw datasource config is
streamMode: "commands".
| Helper | Doel | Gedrag in widgets |
emitProgress(...) | Status/progress doorgeven | Geeft progress events door; voegt geen datasource rows toe. |
appendRows([...]) | Nieuwe rows toevoegen | Widgets zien extra rows terwijl het Element nog draait. |
replaceRows([...]) | Volledige dataset vervangen | Widgets schakelen over naar de nieuwe set rows. |
clearRows() | Huidige rows leegmaken | Maakt de live datasource tabel leeg voordat nieuwe rows volgen. |
Belangrijke notities
- Deze helpers zijn bedoeld voor datasource requests via
/data/{id}/stream, niet voor gewone snapshot/parquet loads.
- Actieve dashboardfilters worden voor live-stream datasources standaard als params doorgestuurd naar het Element.
- Zet datasource
requestParamsMode op none als je die filterparams juist niet wilt doorgeven.
- De normale return value van je Element blijft bestaan, maar live widget-updates horen uit deze stream helpers te komen.
- Gepubliceerde
data- en stream_data-Elements zijn direct selecteerbaar als datasource in dashboards; een aparte datasource-doc is daarvoor niet verplicht.
def run(context, params):
import time
emitProgress(phase="starting", message="Start live run", progressPercent=0)
clearRows()
for step in range(1, 5):
time.sleep(3)
appendRows([{
"step": step,
"message": f"Tick {step}",
"value": step * 10,
}])
emitProgress(
phase="running",
message=f"Step {step} van 4",
progressPercent=step * 25,
)
return {"done": True}
Waar vind ik voorbeelden?
element-examples/command_stream_demo.py toont incrementele row updates.
element-examples/cloudrunlogs.py toont een langere append-only live tail.