谷歌云端硬盘API - 如何处理多线程和文件夹创建正确?



我有一个每隔几分钟运行一次发布/订阅作业的应用程序。

每当应用程序意识到Google云端硬盘中不存在文件夹时,它就会正确创建层次结构。为了满足客户需求,我不得不多线程处理此应用程序,现在正在创建多个文件夹。我在这里需要一个逻辑解决方案、最佳实践或 API 洞察力来解决这个问题。

下面是实际代码的片段:

if not output_folder:
output_folder = drive_handler.create_folder_hierarchy  
(process_id, mail.get_date(), product, activity, team_drive_id)
log_handler.log_hierarchy_created(mail, process_id)
def create_folder(self, name, team_drive_id, parent):
properties = self.get_properties(parent)
fields = 'kind, id, name, mimeType, parents, properties'
body = {"name": name,
"mimeType": "application/vnd.google-apps.folder",
"parents": [parent],
"teamDriveId": team_drive_id,
"properties": properties}
folder = self.service.files().create(body=body, supportsTeamDrives=True, fields=fields).execute()
return folder

我已经在应用程序引擎上尝试了 time.sleep((,cron 作业,但我觉得这些不是最好的方法。

您需要跨线程的全局锁,然后确保在同一上下文中进行目录检查和创建:

从线程导入锁定

# Global variable
foo = Lock()
def check_create():
with foo:
# Check if directory exists
# Create if it does not
return folder

这个伪代码示例显示了这个想法。 现在检查和创建在同一上下文中进行,只有一个线程可以具有锁。

最新更新