From 4c0516d45f4e4f7c43c63bccf05024c9767edd2b Mon Sep 17 00:00:00 2001 From: yzqzss Date: Tue, 25 Jul 2023 23:53:58 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20upload:=20=E5=A4=9A=E5=BC=80=E6=97=B6?= =?UTF-8?q?=E6=9E=81=E5=B0=8F=E6=A6=82=E7=8E=87=E5=9B=A0=E4=BA=8C=E6=AC=A1?= =?UTF-8?q?=E5=88=A0=E9=99=A4=E9=94=81=E6=96=87=E4=BB=B6=E8=A7=A6=E5=8F=91?= =?UTF-8?q?=20FileNotFoundError?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- biliarchiver/utils/dirLock.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/biliarchiver/utils/dirLock.py b/biliarchiver/utils/dirLock.py index 34f08dd..aad4c3a 100644 --- a/biliarchiver/utils/dirLock.py +++ b/biliarchiver/utils/dirLock.py @@ -68,8 +68,12 @@ class UploadLock_Fcntl(): if self.lock_file_fd is None: raise IOError("Lock file not opened.") self.fcntl.lockf(self.lock_file_fd, self.fcntl.LOCK_UN) - self.lock_file_fd.close() - os.remove(self.lock_file) + self.lock_file_fd.close() # lock_file_fd.close() 之后,其他进程有机会在本进程删掉锁文件之前拿到新锁 + try: + os.remove(self.lock_file) # 删除文件不影响其他进程已持有的 inode 新锁 + except FileNotFoundError: + # 如果抢到新锁的是本进程,删除文件的是其他进程,那么本进程再删除时自然会 FileNotFoundError,忽略就好 + pass # print("Released lock.") # decorator