fix(search): keep provider complexity within ratchet

This commit is contained in:
jxxghp
2026-09-01 16:59:36 +08:00
parent 5a4e48e9cc
commit 7d435a25f9

View File

@@ -68,6 +68,24 @@ async def _async_wait_for_site_request(site: SiteIndexer) -> None:
await asyncio.sleep(delay)
def _search_site_page(
owner: "SearchProviderOwner",
*,
site: SiteIndexer,
keyword: str,
media_type: Optional[MediaType],
page: int,
) -> List[TorrentInfo]:
"""等待站点预约后执行一页同步搜索,避免增加 owner 的复杂度。"""
_wait_for_site_request(site)
return owner.search_site_torrents(
site=site,
keyword=keyword,
mtype=media_type,
page=page,
)
@dataclass(frozen=True)
class ProviderBatch:
"""一次 provider 页完成后发布的统一事实。"""
@@ -163,18 +181,11 @@ class SearchProviderOwner(_SearchOwnerBase):
) -> None:
"""向进程共享线程 owner 提交一页,并登记该站点的续页位置。"""
page_number = search_pages[page_index]
def search_site_page() -> List[TorrentInfo]:
_wait_for_site_request(site)
return self.search_site_torrents(
site=site,
keyword=search_keyword,
mtype=media_type,
page=page_number,
)
future = ThreadHelper().submit(
search_site_page,
_search_site_page,
self,
site=site, keyword=search_keyword,
media_type=media_type, page=page_number,
)
pending[future] = (site, page_index, page_number)