Skip to main content
Version: 0.6.0

Application Debugging and Visualisation

Application DAG (directed acyclic graph) structures can get quite complex, especially with applications with over five tasks or nested DAGs.

To view individual task logs you can use the plane command line utility. However, for a more holistic overview of your application and its logs, Flightdeck has a built-in debug platform.

This document describes how to use the Flightdeck to debug your applications.

Flightdeck interface​

To view your application visualization and log overview, head over to Flightdeck and click on the projects tab.

Flightdeck Projects Tab

Flightdeck Projects Tab

From there click on the company associated with your account and next on the tenant in which your application is deployed. You can see a list of all the applications in the selected tenant. Select the application you are working on.

You are presented with a visual representation of your application. This is an interactive visualization that allows you to zoom and pan.

Each green block represents a task instance. Each blue block represents the application entry point or output.

Flightdeck Projects Tab

Simple Linear Application with input, three tasks, and output

Viewing Logs​

You can view the logs for each task by clicking the i icon next to its name. For example, the screenshot below shows the log for task_a. You can view multiple logs at the same time to follow requests through your DAG. The log overview auto-updates as new logs come in. By default, the last 100 lines are shown. You can change this by updating the number in the messages field.

Flightdeck Projects Tab

Viewing logs of task_a

Complex DAG structures​

Seaplane supports complicated DAG structures. Viewing your Flightdeck visualizations can be helpful in understanding which tasks are wired together and if the overall structure is as intended. Especially when working with nested DAGs and multiple inputs and outputs per task.

For example, the following code snippet is visualized in Flightdeck as follows.

from seaplane.apps import App

# create task definiton
def my_task(message):
return "hello world"

# create DAG definition
def dag_def(app, name, input):
# create DAG and wire in my_tasks
dag = app.dag(name)
out = dag.task(my_task, [input], instance_name="task-a")
out1 = dag.task(my_task, [out], instance_name="task-b")
out2 = dag.task(my_task, [out], instance_name="task-c")
out3 = dag.task(my_task, [out], instance_name="task-d")
out4 = dag.task(my_task, [out1, out2, out3], instance_name="task-e")

# set dag response and return dag
dag.respond(out4)
return dag

# create application
app = App("demo-app")

# create new base dag
dag = app.dag("my-dag")

# create wires in primary DAG
out1 = dag.task(my_task, [app.input()], instance_name="task-a")
dag_out1 = dag_def(app, "my-dag-2", out1)
out2 = dag.task(my_task, [dag_out1], instance_name="task-b")

# set app response and run app
app.respond(out2)
app.run()

Flightdeck Projects Tab

A more complex visualization

Model Hub Vizualisation​

Using the Seaplane model hub allows you to use any of the available models in the Seaplane platform asynchronously. While initializing it is a single line of code, in the backend this generates multiple tasks to handle the asynchronous nature of the request. In Flightdeck this is visualized as follows.

Flightdeck Projects Tab

Seaplane model hub DAG visualization