diff --git a/app/chain/search/provider.py b/app/chain/search/provider.py index a7b13caa2..63703f98a 100644 --- a/app/chain/search/provider.py +++ b/app/chain/search/provider.py @@ -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)