python zipfile是线程安全的吗?

Thi*_*t J 7 python django thread-safety zipfile celery

在django项目中,我需要为db中的对象生成一些pdf文件.由于每个文件都需要几秒钟才能生成,因此我使用celery异步运行任务.

问题是,我需要将每个文件添加到zip存档中.我打算使用python zipfile模块,但不同的任务可以在不同的线程中运行,我想知道如果两个任务同时尝试将文件添加到存档会发生什么.

以下代码线程是否安全?我在python官方文档中找不到任何有价值的信息.

try:
    zippath = os.path.join(pdf_directory, 'archive.zip')
    zipfile = ZipFile(zippath, 'a')
    zipfile.write(pdf_fullname)
finally:
    zipfile.close()
Run Code Online (Sandbox Code Playgroud)

注意:这是在python 2.6下运行的

nos*_*klo 5

不,在这个意义上它不是线程安全的.如果您要附加到相同的zip文件,则需要锁定,或者文件内容可能会被加扰.如果你使用单独的ZipFile()对象附加到不同的zip文件,那么你没问题.