async def schedule_activity_task(self, parameters: ExecuteActivityParameters): attr = ScheduleActivityTaskDecisionAttributes() attr.activity_type = parameters.activity_type attr.input = parameters.input if parameters.heartbeat_timeout_seconds > 0: attr.heartbeat_timeout_seconds = parameters.heartbeat_timeout_seconds attr.schedule_to_close_timeout_seconds = parameters.schedule_to_close_timeout_seconds attr.schedule_to_start_timeout_seconds = parameters.schedule_to_start_timeout_seconds attr.start_to_close_timeout_seconds = parameters.start_to_close_timeout_seconds attr.activity_id = parameters.activity_id if not attr.activity_id: attr.activity_id = self.decider.get_and_increment_next_id() attr.task_list = TaskList() attr.task_list.name = parameters.task_list # PORT: RetryParameters retryParameters = parameters.getRetryParameters(); # PORT: if (retryParameters != null) { # PORT: attributes.setRetryPolicy(retryParameters.toRetryPolicy()); # PORT: } scheduled_event_id = self.decider.schedule_activity_task(schedule=attr) future = self.decider.event_loop.create_future() self.scheduled_activities[scheduled_event_id] = future await future assert future.done() exception = future.exception() if exception: raise exception raw_bytes = future.result() return json.loads(str(raw_bytes, "utf-8"))
async def schedule_activity_task(self, parameters: ExecuteActivityParameters): attr = ScheduleActivityTaskDecisionAttributes() attr.activity_type = parameters.activity_type attr.input = parameters.input if parameters.heartbeat_timeout_seconds > 0: attr.heartbeat_timeout_seconds = parameters.heartbeat_timeout_seconds attr.schedule_to_close_timeout_seconds = parameters.schedule_to_close_timeout_seconds attr.schedule_to_start_timeout_seconds = parameters.schedule_to_start_timeout_seconds attr.start_to_close_timeout_seconds = parameters.start_to_close_timeout_seconds attr.activity_id = parameters.activity_id if not attr.activity_id: attr.activity_id = self.decider.get_and_increment_next_id() attr.task_list = TaskList() attr.task_list.name = parameters.task_list if parameters.retry_parameters: attr.retry_policy = parameters.retry_parameters.to_retry_policy() scheduled_event_id = self.decider.schedule_activity_task(schedule=attr) future = self.decider.event_loop.create_future() self.scheduled_activities[scheduled_event_id] = future try: await future except CancelledError as e: logger.debug("Coroutine cancelled (expected)") raise e except Exception as ex: pass ex = future.exception() if ex: activity_failure = ActivityFailureException( scheduled_event_id, parameters.activity_type.name, parameters.activity_id, serialize_exception(ex)) raise activity_failure assert future.done() raw_bytes = future.result() return json.loads(str(raw_bytes, "utf-8"))