Hi Louay,
As was mentioned in the other thread, you use listeners to listen to robot framework and then run something.
As for gRPC, there is a python module for that (see Quick start | Python | gRPC)
If you’re worried about the time the listener takes to run between keywords interfering with the execution time of the test then use threading. Gather the data you need from the executed keyword and pass that to a function in another thread that makes the gRPC calls to send the data
This is how the listener for rfswarm works, it grabs the keyword result and execution time, passes that to a function that runs in a background thread to send that result to the rfswarm manager with some retry handling if it fails to send, meanwhile the robot script continues in the main thread of the process. rfswarm uses the python requests module rather than the grpcio module to send the data, but otherwise it’s doing the same thing.
Hope that helps,
Dave.