Skip to content

Wait for Callback

Internal implementation module: async_durable_execution._operation.wait_for_callback.

Use wait_for_callback() to create a callback, run a submitter step, and wait for an external result as one reusable operation.

wait_for_callback extension built from callback, step, and child context.

Classes

WaitForCallbackContext dataclass

WaitForCallbackContext(
    execution_state: ExecutionState,
    operation_identifier: OperationIdentifier,
    callback_id: str = "",
)

Bases: OperationContext

Context available during wait_for_callback submitter execution.

Functions:

wait_for_callback

wait_for_callback(
    submitter: Callable[[], Awaitable[Any]],
    *,
    name: str | None = None,
    timeout: Duration | None = None,
    heartbeat_timeout: Duration | None = None,
    serdes: SerDes | None = None,
    retry_strategy: Callable[
        [Exception, int], Duration | None
    ]
    | None = None,
) -> Task[Any]

Create a callback, run a submitter, then suspend until the callback resolves.

Parameters:

Name Type Description Default
submitter Callable[[], Awaitable[Any]]

Async callable. Use get_wait_for_callback_context().callback_id inside the submitter to access the callback id.

required
name str | None

Optional durable operation name.

None
timeout Duration | None

Optional maximum time to wait for callback completion.

None
heartbeat_timeout Duration | None

Optional maximum time to wait between callback heartbeats.

None
serdes SerDes | None

Optional serializer for callback results and submitter results.

None
retry_strategy Callable[[Exception, int], Duration | None] | None

Optional strategy that returns a retry delay or None to stop.

None

get_wait_for_callback_context

get_wait_for_callback_context() -> WaitForCallbackContext

Return the active WaitForCallbackContext.