diff --git a/agent/canvas.py b/agent/canvas.py index 2f545f4ec..8e9da7971 100644 --- a/agent/canvas.py +++ b/agent/canvas.py @@ -206,7 +206,12 @@ class Canvas(ABC): waiting.append(c) continue yield "*'{}'* is running...🕞".format(self.get_compnent_name(c)) - ans = cpn.run(self.history, **kwargs) + try: + ans = cpn.run(self.history, **kwargs) + except Exception as e: + logging.exception(f"Canvas.run got exception: {e}") + self.path[-1].append(c) + raise e self.path[-1].append(c) ran += 1 @@ -228,20 +233,12 @@ class Canvas(ABC): switch_out = cpn["obj"].output()[1].iloc[0, 0] assert switch_out in self.components, \ "{}'s output: {} not valid.".format(cpn_id, switch_out) - try: - for m in prepare2run([switch_out]): - yield {"content": m, "running_status": True} - except Exception as e: - logging.exception("Canvas.run got exception") - raise e + for m in prepare2run([switch_out]): + yield {"content": m, "running_status": True} continue - try: - for m in prepare2run(cpn["downstream"]): - yield {"content": m, "running_status": True} - except Exception as e: - logging.exception("Canvas.run got exception") - raise e + for m in prepare2run(cpn["downstream"]): + yield {"content": m, "running_status": True} if ran >= len(self.path[-1]) and waiting: without_dependent_checking = waiting diff --git a/agent/component/exesql.py b/agent/component/exesql.py index e73a393ed..673e44798 100644 --- a/agent/component/exesql.py +++ b/agent/component/exesql.py @@ -64,7 +64,7 @@ class ExeSQL(ComponentBase, ABC): self._loop += 1 ans = self.get_input() - ans = "".join(ans["content"]) if "content" in ans else "" + ans = "".join([str(a) for a in ans["content"]]) if "content" in ans else "" ans = re.sub(r'^.*?SELECT ', 'SELECT ', repr(ans), flags=re.IGNORECASE) ans = re.sub(r';.*?SELECT ', '; SELECT ', ans, flags=re.IGNORECASE) ans = re.sub(r';[^;]*$', r';', ans)