Once you’ve deployed an app and invoked it, you can monitor its status using streaming for real-time updates or polling for periodic checks.
An invocation ends once its code execution finishes.
Streaming Status Updates
For real-time status monitoring, use follow to stream invocation events . This provides immediate updates as your invocation progresses and is more efficient than polling.
Typescript/Javascript
Python
import Kernel from '@onkernel/sdk' ;
const kernel = new Kernel ();
const response = await kernel . invocations . follow ( 'id' );
console . log ( response );
Example
Here’s an example showing how to handle streaming status updates:
const result = await kernel . invocations . retrieve ( invocation . id );
const follow = await kernel . invocations . follow ( result . id );
for await ( const evt of follow ) {
if ( evt . event === 'invocation_state' ) {
console . log ( `Status: ${ evt . invocation . status } ` );
if ( evt . invocation . status === 'succeeded' ) {
console . log ( 'Invocation completed successfully' );
if ( evt . invocation . output ) {
console . log ( 'Result:' , JSON . parse ( evt . invocation . output ));
}
break ;
} else if ( evt . invocation . status === 'failed' ) {
console . log ( 'Invocation failed' );
if ( evt . invocation . status_reason ) {
console . log ( 'Error:' , evt . invocation . status_reason );
}
break ;
}
} else if ( evt . event === 'error' ) {
console . error ( 'Error:' , evt . error . message );
break ;
}
}
Polling Status Updates
Alternatively, you can poll the status endpoint using retrieve to check the invocation status periodically.
Typescript/Javascript
Python
import Kernel from '@onkernel/sdk' ;
const kernel = new Kernel ();
const invocation = await kernel . invocations . retrieve ( 'rr33xuugxj9h0bkf1rdt2bet' );
console . log ( invocation . status );