Skip to main content

How to run a realtime job

Realtime is the default way to run UDFs—no configuration needed. Every UDF runs in realtime mode unless you explicitly request a batch instance.

This guide covers best practices for calling UDFs from other UDFs and building pipelines. For the full fused.run() reference, see Run UDFs in python.

Limits

ResourceLimit
Execution time120s
RAM~4GB

Need more? See How to run a batch job.

Calling another UDF

Use fused.run() to call one UDF from another:

@fused.udf
def parent_udf():
# Call child UDF
result = fused.run("child_udf", name="hello")
return result

Calling another UDF in workbench

In Workbench, fused.run("udf_name") creates a visual link between parent and child UDFs, making pipelines easy to follow.

note

For geospatial UDFs, you can pass bounds as a bbox list, GeoDataFrame, or tile coordinates. See Reserved parameters.

Best practices

Keep results fresh

By default, UDF results are cached. To always get fresh data when calling another UDF, set cache_max_age=0 on your UDF:

@fused.udf(cache_max_age=0)
def udf():
data = fused.run('parent_udf')
return data
warning

Setting cache_max_age=0 means this UDF runs from scratch every time—no caching. Use this when your output depends on frequently changing data.

Pin to commit hash for production

When calling UDFs from GitHub, pin to a specific commit:

commit_hash = "bdfb4d0"
udf = fused.load(f"https://github.com/fusedio/udfs/tree/{commit_hash}/public/My_UDF/")
fused.run(udf)

Avoid pointing to main branch—your UDF will break when others push changes.

Warm & cold starts

After inactivity, Fused needs to spin up an instance and load the environment. This cold start typically takes 10-15s.

Once warm, subsequent realtime calls execute within seconds. Instances stay warm with regular use. Fused does not charge for cold start time.

Cold start vs warm execution

When to scale up

NeedSolution
Run same UDF over multiple inputsHow to run in parallel
More than 120s or ~4GBHow to run a batch job

See also