图形无法在现有的事件循环 (Jupyter, Colab, FastAPI) 内运行,仍在 2.1.6 中

作者: hakoke创建于 2026年7月28日更新于 2026年7月31日
标签bug

从已经存在事件回路的代码中运行一个图表仍然在 2.1.6 上失败,错误报告在 #122, #179, #186, #694, #708和 #771中:

运行时错误: asyncio.run () 无法从运行中的事件循环调用

最小回转,不需要LLM或网络,任何获取前的错误点火:

zz
导入 Ayncio
从racegraphai.docloader.铬导入铬Loader

async def 主线( ):
加载器 = Chromium Loader (["https://example.com"],无头=True)
返回加载器. load ()

ayncio.run(主要())

同样的调用在平版脚本的顶层有效. 坠机来自Chrimium Loader.lazy load',它称为asyncio.run ()' / URL (`scrapegraphai/docloaders/chromium.py'行,位于当前主干线463)。 获取节点使用“ loader.load( ) ” , 因此任何带有默认加载器的获取 URL 的图表都会在笔记本、 FastAPI 处理器和在循环下运行的任何其他代码中点击 。

两个节点试图处理跑动的外壳,但后卫是倒置. graph iterator node.py'行为74-75;generate-answer from image node.py'行为121-123,称为eventloop.run until complete()',确切地说,eventloop.is running()'是真实的,这种呼声总是引起这种情况。 这些树枝只可能 曾经与巢-Ayncio应用。 而nock asyncio是循环上的一个补丁而不是库中的一个补丁:在#179中,一个应用它的用户只是碰到了不同的错误.

repo在 “ AbstractGraph.run safe async” 中已有正确的想法, 它将屏蔽呼叫卸载到执行器上 。 在使用asyncio.run'或run till complete'(chromium.py、浏览器 base.py和以上两个节点)的4个呼叫站点应用同样的想法,在不修改任何普通脚本的情况下,将这些环境固定下来。 在 2.1.6 (现主), Python 3.12, Windows上被测试. 我准备好了 几分钟后会开公关.

内容来源: ScrapeGraphAI/Scrapegraph-ai