簡體   English   中英

pysftp + py7zr 解壓縮掛在存檔上

[英]pysftp + py7zr decompress is hanging on archive

一點上下文:客戶端將 7-zip 存檔放在遠程 sftp 服務器上,我處理它們。

我的問題是,在某些 7-zip 文件上,我的程序掛起,解壓縮 function 永無止境,但存檔的所有文件都在本地服務器上找到(存在)。

我設法在終端上通過 ctrl+c 獲得堆棧跟蹤:

[終端畫面][1][1]:https://i.stack.imgur.com/O62U4.png

我的代碼:

    def download_from_sftp(self):
    with pysftp.Connection(host=self.hostname, port=self.port, username=self.user, password=self.password, cnopts=self.cnopts) as sftp:
        self.logger.debug("Connection succesfully established ... ")

        sftp.cwd(self.path)  # Switch to a remote directory

        directory_structure = sftp.listdir_attr()

        self.logger.debug("Downloading zip files :")
        for attr in directory_structure:
            self.logger.debug(attr.filename + " " + str(attr))
            sftp.get(attr.filename, self.path_retour + attr.filename)

            with py7zr.SevenZipFile(self.path_retour + attr.filename, mode='r') as z:
                z.extractall(self.path_retour)

            os.rename(self.path_retour + attr.filename, self.path_archive_python + attr.filename)  # move zip to archive folder on local server
            sftp.remove(attr.filename)  # delete zip on remote server

對於 1000 個 7zip 存檔(大多數存檔小於 1mb),此問題可能會發生 1 次。 我試圖驗證檔案的完整性並且它們是有效的。 在我的桌面上,py7zr 能夠提取檔案的所有文件而不會崩潰/掛起。

我在想也許是 sftp 連接導致掛起。

謝謝

- - 編輯 - -

根據 MartinPrikryl 的反饋,我確實在本地計算機上運行了我的整個腳本並且它沒有掛起。 它僅與運行腳本的服務器一起掛起該特定存檔。 我注意到存檔比另一個大得多(~ 9mb)。 但是服務器有很多磁盤空間(1 TB 可用)、4gb 內存和 4 個 CPU,所以這應該不是問題。

我沒能找到為什么 py7zr 掛在一些檔案上,但是將 python 3.7.4 更新到 python 3.8.5解決了這個問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM