使用 open() 函数将大字符串数据保存到文本文件时内存不足

out of memory when saving a large string data into a text file using open() function

我尝试使用以下代码将大字符串数据保存到文本文件中。

@api.route("/upload/{project_name}/files")
async def receive_files(req, resp, *, project_name):

    @api.background.task
    def save_files(uploaded_data, project_name):

        filename = uploaded_data['filename']
        filedata = uploaded_data['data']


        with open(f"data/{project_name}/{filename}", "w", encoding="utf-8", newline="") as f:
            f.write(str(data))
            print('successfully saved', filename)

    data = await req.media()
    save_files(data, project_name)
    resp.media = {'success': True}

当我向这个函数发送一个像 600MB 的 csv 文件这样的大文件时,这个过程由于内存不足而失败。它适用于小于 300MB 的文件。有什么办法可以优化这个功能??提前谢谢你。

我正在使用 python-responder 和一台配备 16GB RAM 的笔记本电脑

我忘记传递正确的媒体格式,响应者的文件-python。

data = await req.media(format='files')