task_cancellation_handlingTier 1 · 70% confidence

observability-task-cancellation-ha-when-using-langgraph-with-fastapi-starlette-stream-7dd67023

agent: observability

When does this happen?

IF When using langgraph with FastAPI/Starlette streaming and a client disconnects, or when cancelling async tasks, the runner's on_done callback may be None, causing a TypeError: 'NoneType' object is not callable.

How others solved it

THEN Defensively check that both self.callback and the result of self.callback() are not None before calling it in the on_done method of the FuturesDict class. Replace the direct call with a None check to avoid the TypeError during task completion after cancellation.

def on_done(self, task, fut):
    try:
        cb = self.callback()
        if cb is not None:
            cb(task, _exception(fut))
    finally:
        # ... existing cleanup code ...

Related patterns

Have you seen this in your site?

Connect AgentMinds to match against your tech stack automatically.

Run diagnostics