@@ -42,7 +42,18 @@ def cancel(self, task_token, details=None):
4242 :param details: provided details about cancel
4343 :type details: string
4444 """
45- return self .connection .respond_activity_task_canceled (task_token )
45+ try :
46+ return self .connection .respond_activity_task_canceled (task_token )
47+ except SWFResponseError as e :
48+ if e .error_code == 'UnknownResourceFault' :
49+ raise DoesNotExistError (
50+ "Unable to cancel activity task with token: {}.\n "
51+ "Possible reasons: task already canceled or "
52+ "workflow execution is closed.\n "
53+ "Details: {}" .format (task_token )
54+ )
55+
56+ raise ResponseError (e .body ['message' ])
4657
4758 def complete (self , task_token , result = None ):
4859 """Responds to ``swf` that the activity task is completed
@@ -53,10 +64,21 @@ def complete(self, task_token, result=None):
5364 :param result: The result of the activity task.
5465 :type result: string
5566 """
56- return self .connection .respond_activity_task_completed (
57- task_token ,
58- result
59- )
67+ try :
68+ return self .connection .respond_activity_task_completed (
69+ task_token ,
70+ result
71+ )
72+ except SWFResponseError as e :
73+ if e .error_code == 'UnknownResourceFault' :
74+ raise DoesNotExistError (
75+ "Unable to complete activity task with token: {}.\n "
76+ "Possible reasons: task already completed or "
77+ "workflow execution is closed.\n "
78+ "Details: {}" .format (task_token , e .body ['message' ])
79+ )
80+
81+ raise ResponseError (e .body ['message' ])
6082
6183 def fail (self , task_token , details = None , reason = None ):
6284 """Replies to ``swf`` that the activity task failed
@@ -70,11 +92,22 @@ def fail(self, task_token, details=None, reason=None):
7092 :param reason: Description of the error that may assist in diagnostics
7193 :type reason: string
7294 """
73- return self .connection .respond_activity_task_failed (
74- task_token ,
75- details ,
76- reason
77- )
95+ try :
96+ return self .connection .respond_activity_task_failed (
97+ task_token ,
98+ details ,
99+ reason
100+ )
101+ except SWFResponseError as e :
102+ if e .error_code == 'UnknownResourceFault' :
103+ raise DoesNotExistError (
104+ "Unable to fail activity task with token: {}.\n "
105+ "Possible reasons: task already failed or "
106+ "workflow execution is closed"
107+ "Details: {}" .format (task_token , e .body ['message' ])
108+ )
109+
110+ raise ResponseError (e .body ['message' ])
78111
79112 def heartbeat (self , task_token , details = None ):
80113 """Records activity task heartbeat
@@ -85,10 +118,20 @@ def heartbeat(self, task_token, details=None):
85118 :param details: provided details about cancel
86119 :type details: string
87120 """
88- return self .connection .record_activity_task_heartbeat (
89- task_token ,
90- details
91- )
121+ try :
122+ return self .connection .record_activity_task_heartbeat (
123+ task_token ,
124+ details
125+ )
126+ except SWFResponseError as e :
127+ if e .error_code == 'UnknownResourceFault' :
128+ raise DoesNotExistError (
129+ "Unable to send activity task {} heartbeat.\n "
130+ "Possible reason: workflow execution is closed.\n "
131+ "Details: {}" .format (task_token , e .body ['message' ])
132+ )
133+
134+ raise ResponseError (e .body ['message' ])
92135
93136 def poll (self , task_list = None , identity = None ):
94137 """Polls for an activity task to process from current
@@ -115,11 +158,21 @@ def poll(self, task_list=None, identity=None):
115158 task_list = task_list or self .task_list
116159 identity = identity or self .identity
117160
118- polled_activity_data = self .connection .poll_for_activity_task (
119- self .domain .name ,
120- task_list ,
121- identity = identity
122- )
161+ try :
162+ polled_activity_data = self .connection .poll_for_activity_task (
163+ self .domain .name ,
164+ task_list ,
165+ identity = identity
166+ )
167+ except SWFResponseError as e :
168+ if e .error_code == 'UnknownResourceFault' :
169+ raise DoesNotExistError (
170+ "Unable to poll activity task.\n "
171+ "Possible reason: workflow execution is probably closed.\n "
172+ "Details: {}" .format (e .body ['message' ])
173+ )
174+
175+ raise ResponseError (e .body ['message' ])
123176
124177 if not 'taskToken' in polled_activity_data :
125178 raise PollTimeout ("Activity Worker poll timed out" )
0 commit comments