В проекте django мне нужно сгенерировать несколько 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()
Примечание: это работает под python 2.6