fix deadlock

This commit is contained in:
jxxghp
2026-01-21 22:46:04 +08:00
parent 46466624ae
commit abbd2253ad
+1 -16
View File
@@ -221,9 +221,8 @@ class JobManager:
"""
移除作业
"""
__mediaid__ = self.__get_media_id(media=task.mediainfo, season=task.meta.begin_season)
with job_lock:
# 移除作业
__mediaid__ = self.__get_media_id(media=task.mediainfo, season=task.meta.begin_season)
if __mediaid__ in self._job_view:
# 移除季集信息
if __mediaid__ in self._season_episodes:
@@ -320,7 +319,6 @@ class JobManager:
获取某项任务成功的任务
"""
__mediaid__ = self.__get_media_id(media=media, season=season)
with job_lock:
if __mediaid__ not in self._job_view:
return []
return [task for task in self._job_view[__mediaid__].tasks if task.state == "completed"]
@@ -330,7 +328,6 @@ class JobManager:
获取全部任务
"""
__mediaid__ = self.__get_media_id(media=media, season=season)
with job_lock:
if __mediaid__ not in self._job_view:
return []
return self._job_view[__mediaid__].tasks
@@ -340,8 +337,6 @@ class JobManager:
获取某项任务成功总数
"""
__mediaid__ = self.__get_media_id(media=media, season=season)
with job_lock:
# 计算状态为完成的任务数
if __mediaid__ not in self._job_view:
return 0
return len([task for task in self._job_view[__mediaid__].tasks if task.state == "completed"])
@@ -351,8 +346,6 @@ class JobManager:
获取某项任务成功文件总大小
"""
__mediaid__ = self.__get_media_id(media=media, season=season)
with job_lock:
# 计算状态为完成的任务数
if __mediaid__ not in self._job_view:
return 0
return sum([
@@ -367,7 +360,6 @@ class JobManager:
"""
获取所有task任务总数
"""
with job_lock:
return sum([len(job.tasks) for job in self._job_view.values()])
def list_jobs(self) -> List[TransferJob]:
@@ -381,7 +373,6 @@ class JobManager:
获取季集清单
"""
__mediaid__ = self.__get_media_id(media=media, season=season)
with job_lock:
return self._season_episodes.get(__mediaid__) or []
@@ -527,7 +518,6 @@ class TransferChain(ChainBase, ConfigReloadMixin, metaclass=Singleton):
})
# 移除已完成的任务
with job_lock:
self.jobview.remove_job(task)
transferhis = TransferHistoryOper()
@@ -568,7 +558,6 @@ class TransferChain(ChainBase, ConfigReloadMixin, metaclass=Singleton):
))
# 整理失败
with job_lock:
self.jobview.fail_task(task)
# 全部整理完成且有成功的任务时
@@ -579,7 +568,6 @@ class TransferChain(ChainBase, ConfigReloadMixin, metaclass=Singleton):
return False, transferinfo.message
# task转移成功
with job_lock:
self.jobview.finish_task(task)
logger.info(f"{task.fileitem.name} 入库成功:{transferinfo.target_diritem.path}")
@@ -666,7 +654,6 @@ class TransferChain(ChainBase, ConfigReloadMixin, metaclass=Singleton):
"""
添加到作业视图
"""
with job_lock:
self.jobview.add_task(task)
def remove_from_queue(self, fileitem: FileItem):
@@ -675,7 +662,6 @@ class TransferChain(ChainBase, ConfigReloadMixin, metaclass=Singleton):
"""
if not fileitem:
return
with job_lock:
self.jobview.remove_task(fileitem)
def __start_transfer(self):
@@ -919,7 +905,6 @@ class TransferChain(ChainBase, ConfigReloadMixin, metaclass=Singleton):
finally:
# 移除已完成的任务
with job_lock:
if self.jobview.is_done(task):
self.jobview.remove_job(task)