{ "cells": [ { "cell_type": "code", "id": "initial_id", "metadata": { "collapsed": true, "ExecuteTime": { "end_time": "2026-08-01T07:55:31.602128Z", "start_time": "2026-08-01T07:55:29.787634Z" } }, "source": [ "from typing import TypedDict\n", "\n", "from langgraph.types import RetryPolicy\n", "from loguru import logger\n", "from requests import HTTPError\n", "\n", "from langgraph.graph import StateGraph, START, END\n", "\n", "\n", "class OverallState(TypedDict):\n", " pass\n", "\n", "\n", "def node_a(state: OverallState) -> OverallState:\n", " logger.info(\"node_a\")\n", " raise HTTPError\n", "\n", "\n", "builder = StateGraph(state_schema=OverallState)\n", "builder.add_node(\n", " \"node_a\", node_a,\n", " retry_policy=RetryPolicy(\n", " max_attempts=3,\n", " jitter=True\n", " ))\n", "\n", "builder.add_edge(START,\"node_a\")\n", "builder.add_edge(\"node_a\",END)\n", "\n", "graph=builder.compile()\n", "\n", "try:\n", " graph.invoke({})\n", "except HTTPError as e:\n", " logger.exception(e)" ], "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "\u001B[32m2026-08-01 15:55:29.797\u001B[0m | \u001B[1mINFO \u001B[0m | \u001B[36m__main__\u001B[0m:\u001B[36mnode_a\u001B[0m:\u001B[36m15\u001B[0m - \u001B[1mnode_a\u001B[0m\n", "\u001B[32m2026-08-01 15:55:30.395\u001B[0m | \u001B[1mINFO \u001B[0m | \u001B[36m__main__\u001B[0m:\u001B[36mnode_a\u001B[0m:\u001B[36m15\u001B[0m - \u001B[1mnode_a\u001B[0m\n", "\u001B[32m2026-08-01 15:55:31.562\u001B[0m | \u001B[1mINFO \u001B[0m | \u001B[36m__main__\u001B[0m:\u001B[36mnode_a\u001B[0m:\u001B[36m15\u001B[0m - \u001B[1mnode_a\u001B[0m\n", "\u001B[32m2026-08-01 15:55:31.563\u001B[0m | \u001B[31m\u001B[1mERROR \u001B[0m | \u001B[36m__main__\u001B[0m:\u001B[36m\u001B[0m:\u001B[36m35\u001B[0m - \u001B[31m\u001B[1m\u001B[0m\n", "\u001B[33m\u001B[1mTraceback (most recent call last):\u001B[0m\n", "\n", " File \"\", line 198, in _run_module_as_main\n", " File \"\", line 88, in _run_code\n", " File \"/Volumes/ExternalStorageA/project/2026.7/langgraph学习/.venv/lib/python3.13/site-packages/ipykernel_launcher.py\", line 18, in \n", " app.launch_new_instance()\n", " │ └ >\n", " └ \n", " └ \n", " File \"/Volumes/ExternalStorageA/project/2026.7/langgraph学习/.venv/lib/python3.13/site-packages/ipykernel/kernelapp.py\", line 807, in start\n", " self.io_loop.start()\n", " │ │ └ \n", " │ └ \n", " └ \n", " File \"/Volumes/ExternalStorageA/project/2026.7/langgraph学习/.venv/lib/python3.13/site-packages/tornado/platform/asyncio.py\", line 211, in start\n", " self.asyncio_loop.run_forever()\n", " │ │ └ \n", " │ └ <_UnixSelectorEventLoop running=True closed=False debug=False>\n", " └ \n", " File \"/Users/gqt/.local/share/uv/python/cpython-3.13.11-macos-aarch64-none/lib/python3.13/asyncio/base_events.py\", line 683, in run_forever\n", " self._run_once()\n", " │ └ \n", " └ <_UnixSelectorEventLoop running=True closed=False debug=False>\n", " File \"/Users/gqt/.local/share/uv/python/cpython-3.13.11-macos-aarch64-none/lib/python3.13/asyncio/base_events.py\", line 2050, in _run_once\n", " handle._run()\n", " │ └ \n", " └ ()>\n", " File \"/Users/gqt/.local/share/uv/python/cpython-3.13.11-macos-aarch64-none/lib/python3.13/asyncio/events.py\", line 89, in _run\n", " self._context.run(self._callback, *self._args)\n", " │ │ │ │ │ └ \n", " │ │ │ │ └ ()>\n", " │ │ │ └ \n", " │ │ └ ()>\n", " │ └ \n", " └ ()>\n", " File \"/Volumes/ExternalStorageA/project/2026.7/langgraph学习/.venv/lib/python3.13/site-packages/ipykernel/kernelbase.py\", line 621, in shell_main\n", " await self.dispatch_shell(msg, subshell_id=subshell_id)\n", " │ │ │ └ None\n", " │ │ └ [, , ')>, , \n", " └ \n", " File \"/Volumes/ExternalStorageA/project/2026.7/langgraph学习/.venv/lib/python3.13/site-packages/ipykernel/kernelbase.py\", line 478, in dispatch_shell\n", " await result\n", " └ \n", " File \"/Volumes/ExternalStorageA/project/2026.7/langgraph学习/.venv/lib/python3.13/site-packages/ipykernel/ipkernel.py\", line 372, in execute_request\n", " await super().execute_request(stream, ident, parent)\n", " │ │ └ {'header': {'msg_id': '8c406f25-ebbb-410a-aacc-a8bb28894b9b', 'username': '', 'session': 'b96952d9-b243-44ee-8eef-3a21fc6793a...\n", " │ └ [b'e3fae01b-8f7d-4358-9fd2-c397a1e35c71', b'\\x01']\n", " └ \n", " File \"/Volumes/ExternalStorageA/project/2026.7/langgraph学习/.venv/lib/python3.13/site-packages/ipykernel/kernelbase.py\", line 834, in execute_request\n", " reply_content = await reply_content\n", " └ \n", " File \"/Volumes/ExternalStorageA/project/2026.7/langgraph学习/.venv/lib/python3.13/site-packages/ipykernel/ipkernel.py\", line 460, in do_execute\n", " res = shell.run_cell(\n", " │ └ \n", " └ \n", " File \"/Volumes/ExternalStorageA/project/2026.7/langgraph学习/.venv/lib/python3.13/site-packages/ipykernel/zmqshell.py\", line 665, in run_cell\n", " return super().run_cell(*args, **kwargs)\n", " │ └ {'store_history': True, 'silent': False, 'cell_id': None}\n", " └ ('from typing import TypedDict\\n\\nfrom langgraph.types import RetryPolicy\\nfrom loguru import logger\\nfrom requests import HT...\n", " File \"/Volumes/ExternalStorageA/project/2026.7/langgraph学习/.venv/lib/python3.13/site-packages/IPython/core/interactiveshell.py\", line 3170, in run_cell\n", " result = self._run_cell(\n", " │ └ \n", " └ \n", " File \"/Volumes/ExternalStorageA/project/2026.7/langgraph学习/.venv/lib/python3.13/site-packages/IPython/core/interactiveshell.py\", line 3225, in _run_cell\n", " result = runner(coro)\n", " │ └ \n", " └ \n", " File \"/Volumes/ExternalStorageA/project/2026.7/langgraph学习/.venv/lib/python3.13/site-packages/IPython/core/async_helpers.py\", line 128, in _pseudo_sync_runner\n", " coro.send(None)\n", " │ └ \n", " └ \n", " File \"/Volumes/ExternalStorageA/project/2026.7/langgraph学习/.venv/lib/python3.13/site-packages/IPython/core/interactiveshell.py\", line 3447, in run_cell_async\n", " has_raised = await self.run_ast_nodes(code_ast.body, cell_name,\n", " │ │ │ │ └ '/var/folders/_2/m2k52m654svgy0vz6nv68s7r0000gn/T/ipykernel_6932/1549273080.py'\n", " │ │ │ └ [, , , \n", " │ └ \n", " └ \n", " File \"/Volumes/ExternalStorageA/project/2026.7/langgraph学习/.venv/lib/python3.13/site-packages/IPython/core/interactiveshell.py\", line 3688, in run_ast_nodes\n", " if await self.run_code(code, result, async_=asy):\n", " │ │ │ │ └ False\n", " │ │ │ └ at 0x10d133c30, file \"/var/folders/_2/m2k52m654svgy0vz6nv68s7r0000gn/T/ipykernel_6932/1549273080.py\", l...\n", " │ └ \n", " └ \n", " File \"/Volumes/ExternalStorageA/project/2026.7/langgraph学习/.venv/lib/python3.13/site-packages/IPython/core/interactiveshell.py\", line 3748, in run_code\n", " exec(code_obj, self.user_global_ns, self.user_ns)\n", " │ │ │ │ └ \n", " │ │ │ └ \n", " │ │ └ \n", " │ └ \n", " └ at 0x10d133c30, file \"/var/folders/_2/m2k52m654svgy0vz6nv68s7r0000gn/T/ipykernel_6932/1549273080.py\", l...\n", "\n", "> File \"\u001B[32m/var/folders/_2/m2k52m654svgy0vz6nv68s7r0000gn/T/ipykernel_6932/\u001B[0m\u001B[32m\u001B[1m1549273080.py\u001B[0m\", line \u001B[33m33\u001B[0m, in \u001B[35m\u001B[0m\n", " \u001B[1mgraph\u001B[0m\u001B[35m\u001B[1m.\u001B[0m\u001B[1minvoke\u001B[0m\u001B[1m(\u001B[0m\u001B[1m{\u001B[0m\u001B[1m}\u001B[0m\u001B[1m)\u001B[0m\n", " \u001B[36m│ └ \u001B[0m\u001B[36m\u001B[1m\u001B[0m\n", " \u001B[36m└ \u001B[0m\u001B[36m\u001B[1m\u001B[0m\n", "\n", " File \"/Volumes/ExternalStorageA/project/2026.7/langgraph学习/.venv/lib/python3.13/site-packages/langgraph/pregel/main.py\", line 3913, in invoke\n", " for chunk in self.stream(\n", " │ └ \n", " └ \n", " File \"/Volumes/ExternalStorageA/project/2026.7/langgraph学习/.venv/lib/python3.13/site-packages/langgraph/pregel/main.py\", line 2967, in stream\n", " for _ in runner.tick(\n", " │ │ └ \n", " │ └ \n", " └ None\n", " File \"/Volumes/ExternalStorageA/project/2026.7/langgraph学习/.venv/lib/python3.13/site-packages/langgraph/pregel/_runner.py\", line 207, in tick\n", " run_with_retry(\n", " └ \n", " File \"/Volumes/ExternalStorageA/project/2026.7/langgraph学习/.venv/lib/python3.13/site-packages/langgraph/pregel/_retry.py\", line 617, in run_with_retry\n", " return task.proc.invoke(task.input, config)\n", " │ │ │ │ └ {'configurable': {'__pregel_runtime': Runtime(context=None, store=None, stream_writer=.stream...\n", " │ │ │ └ \n", " │ │ └ PregelExecutableTask(name='node_a', input={}, proc=, writes=...\n", " │ └ \n", " └ PregelExecutableTask(name='node_a', input={}, proc=, writes=...\n", " File \"/Volumes/ExternalStorageA/project/2026.7/langgraph学习/.venv/lib/python3.13/site-packages/langgraph/_internal/_runnable.py\", line 684, in invoke\n", " input = context.run(step.invoke, input, config, **kwargs)\n", " │ │ │ │ │ │ └ {}\n", " │ │ │ │ │ └ {'configurable': {'__pregel_runtime': Runtime(context=None, store=None, stream_writer=.stream...\n", " │ │ │ │ └ {}\n", " │ │ │ └ \n", " │ │ └ node_a(tags=None, recurse=True, explode_args=False, func_accepts={})\n", " │ └ \n", " └ <_contextvars.Context object at 0x10c307ac0>\n", " File \"/Volumes/ExternalStorageA/project/2026.7/langgraph学习/.venv/lib/python3.13/site-packages/langgraph/_internal/_runnable.py\", line 426, in invoke\n", " ret = self.func(*args, **kwargs)\n", " │ │ │ └ {}\n", " │ │ └ ({},)\n", " │ └ \n", " └ node_a(tags=None, recurse=True, explode_args=False, func_accepts={})\n", "\n", " File \"\u001B[32m/var/folders/_2/m2k52m654svgy0vz6nv68s7r0000gn/T/ipykernel_6932/\u001B[0m\u001B[32m\u001B[1m1549273080.py\u001B[0m\", line \u001B[33m16\u001B[0m, in \u001B[35mnode_a\u001B[0m\n", " \u001B[35m\u001B[1mraise\u001B[0m \u001B[1mHTTPError\u001B[0m\n", " \u001B[36m └ \u001B[0m\u001B[36m\u001B[1m\u001B[0m\n", "\n", "\u001B[31m\u001B[1mrequests.exceptions.HTTPError\u001B[0m\n", "During task with name 'node_a' and id '7ca2bca4-ef75-604f-f146-f6d764f7c0ef'\n" ] } ], "execution_count": 7 } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 2 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", "version": "2.7.6" } }, "nbformat": 4, "nbformat_minor": 5 }