在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