From 33d45cf2de2b691b1ef2ccfe9ccbc0c7d5afb865 Mon Sep 17 00:00:00 2001 From: hehesheng Date: Fri, 7 Jun 2024 23:51:54 +0800 Subject: [PATCH] fix: requester bug --- backend/TgFileSystemClient.py | 11 +++++++---- frontend/search.py | 2 ++ 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/backend/TgFileSystemClient.py b/backend/TgFileSystemClient.py index da38a49..30116b1 100644 --- a/backend/TgFileSystemClient.py +++ b/backend/TgFileSystemClient.py @@ -308,6 +308,7 @@ class TgFileSystemClient(object): return res async def _download_media_chunk(self, msg: types.Message, media_holder: MediaChunkHolder) -> None: + logger.info(f"start downloading new chunk:{media_holder=}") try: offset = media_holder.start + media_holder.length target_size = media_holder.target_len - media_holder.length @@ -321,9 +322,6 @@ class TgFileSystemClient(object): else: media_holder.append_chunk_mem(chunk) if media_holder.is_completed(): - if not media_holder.try_clear_waiter_and_requester(): - logger.error("I think never run here.") - media_holder.set_done() break if await media_holder.is_disconneted(): raise asyncio.CancelledError("all requester canceled.") @@ -334,8 +332,13 @@ class TgFileSystemClient(object): logger.error( f"_download_media_chunk err:{err=},{offset=},{target_size=},{media_holder},\r\n{err=}\r\n{traceback.format_exc()}" ) + else: + if not media_holder.try_clear_waiter_and_requester(): + logger.error("I think never run here.") + media_holder.set_done() + logger.debug(f"downloaded chunk:{offset=},{target_size=},{media_holder}") finally: - logger.debug(f"downloaded chunk:{time.time()}.{offset=},{target_size=},{media_holder}") + pass async def streaming_get_iter(self, msg: types.Message, start: int, end: int, req: Request): try: diff --git a/frontend/search.py b/frontend/search.py index ef04f1a..275bae7 100644 --- a/frontend/search.py +++ b/frontend/search.py @@ -71,6 +71,8 @@ def loop(): st.session_state.page_index = st.session_state.page_index + 1 st.session_state.force_skip = True st.rerun() + st.session_state.page_index = st.number_input( + "page_index", key="page_index_input", min_value=1, max_value=100, value=st.session_state.page_index, format="%d", label_visibility="hidden") def media_file_res_container(index: int, msg_ctx: str, file_name: str, file_size: int, url: str, src_link: str): file_size_str = f"{file_size/1024/1024:.2f}MB"