PeterDing / BaiduPCS-Py

BaiduPCS API & App 百度网盘客户端 和 API
MIT License
667 stars 108 forks source link

download()在同一个session中只能调用一次 #103

Closed adrzhou closed 1 year ago

adrzhou commented 1 year ago

您好!

因为API好像没有提供与下载有关的函数,所以我试着用 from baidupcs-py.commands.download import download 来代替

但是用这个方法下载一次文件之后,再次调用download()就会报错

[14:30:53] PRINT threading.py:1326 Exception in thread Thread-7 (download): [14:30:53] PRINT threading.py:1326 Traceback (most recent call last): [14:30:53] PRINT threading.py:1326 File "/usr/lib/python3.10/threading.py", line 1016, in _bootstrap_inner [14:30:53] PRINT threading.py:1326 self.run() [14:30:53] PRINT threading.py:1326 File "/usr/lib/python3.10/threading.py", line 953, in run [14:30:53] PRINT threading.py:1326 self._target(*self._args, **self._kwargs) [14:30:53] PRINT threading.py:1326 File "/home/adrzhou/.local/lib/python3.10/site-packages/baidupcs_py/commands/download.py", line 406, in download [14:30:53] PRINT threading.py:1326 download_file( [14:30:53] PRINT threading.py:1326 File "/home/adrzhou/.local/lib/python3.10/site-packages/baidupcs_py/commands/download.py", line 309, in download_file [14:30:53] PRINT threading.py:1326 downloader.download( [14:30:53] PRINT threading.py:1326 File "/home/adrzhou/.local/lib/python3.10/site-packages/baidupcs_py/commands/download.py", line 83, in download [14:30:53] PRINT threading.py:1326 self._me_download( [14:30:53] PRINT threading.py:1326 File "/home/adrzhou/.local/lib/python3.10/site-packages/baidupcs_py/commands/download.py", line 183, in _me_download [14:30:53] PRINT threading.py:1326 meDownloader.download( [14:30:53] PRINT threading.py:1326 File "/home/adrzhou/.local/lib/python3.10/site-packages/baidupcs_py/common/downloader.py", line 68, in download [14:30:53] PRINT threading.py:1326 fut = cls._executor.submit( [14:30:53] PRINT threading.py:1326 File "/usr/lib/python3.10/concurrent/futures/thread.py", line 167, in submit [14:30:53] PRINT threading.py:1326 raise RuntimeError('cannot schedule new futures after shutdown') [14:30:53] PRINT threading.py:1326 RuntimeError: cannot schedule new futures after shutdown

PeterDing commented 1 year ago

如果用 me 下载器,baidupcs-py.commands.download.download 调用后,会在最后把下载线程关闭。 你可以一次性把所有要下载的路径都传给 download

或者,你可以复制 download 函数到自己的脚本,并把下面两行去除: https://github.com/PeterDing/BaiduPCS-Py/blob/6ac0ceda9616a3524418ed658c948f0ce4a576de/baidupcs_py/commands/download.py#L430-L431

最后在程序最后推出前执行:

from baidupcs_py.common.downloader import MeDownloader
MeDownloader._exit_executor()
adrzhou commented 1 year ago

谢谢!解决了!