mirror of
https://github.com/bytedance/deer-flow.git
synced 2026-10-26 21:26:39 +00:00
* fix(community): close the per-call Firecrawl client's async HTTP pool The firecrawl tools build a fresh AsyncFirecrawlApp for every web_search and web_fetch call. The migration to the async client (#5786) kept the per-call construction, but AsyncFirecrawlApp eagerly creates an httpx.AsyncClient-backed pool in its constructor and exposes no public teardown, so each tool call abandons one unclosed pool. The sibling providers either scope their httpx clients with 'async with' or close them in a finally (tavily); firecrawl now does the same via a best-effort teardown that tolerates SDK shapes without the v2 client. Signed-off-by: yetuge <2219677952@qq.com> * fix(firecrawl): make per-call pool teardown resilient Signed-off-by: Willem Jiang <willem.jiang@gmail.com> * test(firecrawl): skip the real-SDK teardown test when the private layout differs The real-SDK test hard-asserted the locked firecrawl-py 4.23.0 private layout (_v2_client.async_http_client._client.is_closed), so an environment resolving another version in the declared >=1.15.0 range died with AttributeError instead of skipping — while the helper (and test_teardown_survives_a_client_without_v2_attributes) deliberately treat a missing or reshaped layout as a no-op. Guard on the same attributes and skip when they are absent. Signed-off-by: yetuge <2219677952@qq.com> --------- Signed-off-by: yetuge <2219677952@qq.com> Signed-off-by: Willem Jiang <willem.jiang@gmail.com> Co-authored-by: Willem Jiang <willem.jiang@gmail.com>