Hi there, my setup is I have a go temporalio client that is requesting workflows to be executed by a python tempoalio client. My python activities are very long running and my go temporalio client would like to know how it is progressing. For now - I just want to get a “percent complete” number from the python client - one day - I might want a bit more information. From what I saw in the termporalio documentation it looks like the recommended way to do this is to use the DescribeWorkflowExecution and check the status of heartbeat details. Let me know if there is a better and/or easier way of getting this kind of information.
I’m using the go-sdk to submit a workflow request to the temporalio sdk. On the receiving/worker side I’m using the python-sdk to fulfill that work.
In the go client I’m checking for progress as recommended in this post:
specifically I’m using the
Client.DescribeWorkflowExecution(..)
function and the heartbeats are never populated. Initially I wasn’t sure where the issue was - i.e. on the sending of heartbeats from python or the receiving/query side in go. But, once I checked the long running activity in the temporal web admin - it was also showing no heartbeat details for my activity.
I’ve read through the temporalio doc’s and the only other thing that seems like it might be preventing the heartbeat from being sent is throttling (as determined by heartbeat timeouts)? What seems more likely is that I’m failing to perform some kind of a send (by calling something on the client/worker?).
As a test - I just had my python activity call a test function which just continuously posts a heartbeart and then my calling function just returns the result:
def test_heartbeat(activity:activity):
num_heartbeats = 100
for i in range(num_heartbeats):
print(f"test_heartbeat: i: {i}: 1")
activity.heartbeat(str(i))
time.sleep(1)
Thanks!