如何管理上传和下载文件?

时间:2021-06-22 08:53:24

标签: python django concurrency

我开发了一个具有 2 个主要功能的 Django 应用:

  • 使用 API 从其他数据库导入数据 -> 为每个数据库模型生成一个 csv 文件
  • 从导入生成的 csv 文件中导出 zip 文件夹中的过滤数据:导出功能是对特定文件夹的文件的循环;每个文件都被打开以读取和过滤行并生成一个带有过滤行的 zip 文件夹
for file in listOfFiles:
    records = []
    # read the files = csv from Cyrille python script -> API RedCap
    with open(path + file, newline='', encoding="utf8") as csvfile:
        has_header = csv.Sniffer().has_header(csvfile.read())                  
        csvfile.seek(0)

        spamreader = csv.reader(csvfile, delimiter=',', quotechar='|')
        csv_headings = ','.join(next(spamreader))       
        for row in spamreader:
            [positions[0]:positions[1]])
            for site in sites:                    
                # get position of site code start and end
                positions = getPatientMask(study.id)
                if site == row[0][positions[0]:positions[1]]: 
                     records.append(','.join(row))

        zip_file.writestr(file, csv_headings+'\n'+'\n'.join(records))
                
    zip_file.close()

在“标准使用”中,导入是使用 celery 的自动编程任务(每天午夜)。 但是一些用户会被授权在需要时进行导入,替换当天的 csv 文件。这种“实时”导入也是使用 celery 任务完成的。

导入可能需要时间,这就是为什么“正常使用”是午夜自动执行的任务。

例如

  • 用户 1 开始运行实时导入,并且 2021-06-24 天文件夹中的所有 csv 文件开始被替换
  • 同时,用户 2 正在尝试导出文件夹 2021-06-24 中的当天文件,这些文件正在被正在进行的实时替换用户 1 运行的时间导入...

不知道会不会有问题?大概... 我该如何管理? 感谢帮助

0 个答案:

没有答案
相关问题