在django項目中,我需要爲db中的對象生成一些pdf文件。由於每個文件需要幾秒鐘才能生成,因此我使用celery異步運行任務。python zipfile是線程安全的嗎?
問題是,我需要將每個文件添加到zip存檔。我打算使用python zipfile模塊,但不同的任務可以在不同的線程中運行,並且我想知道如果兩個任務嘗試同時向檔案中添加文件會發生什麼。
下面的代碼線程安全嗎?我在python官方文檔中找不到任何有價值的信息。
try:
zippath = os.path.join(pdf_directory, 'archive.zip')
zipfile = ZipFile(zippath, 'a')
zipfile.write(pdf_fullname)
finally:
zipfile.close()
注:這是在Python 2.6中
您使用哪種芹菜併發方法?如果你的代碼在具有默認多處理併發方法的celery任務中執行,那麼它們在不同的進程中執行,你不必擔心線程的安全性。 – mher 2012-02-09 10:24:52
然後,問題不是線程安全,而是同時文件寫入訪問。 – 2012-02-09 10:26:29