Yan*_*ler 11 python azure-storage google-cloud-storage aws-lambda google-cloud-functions
我正在尝试迁移AWS Lambda编写的函数PythonCF
输出 > 2GB - 但略小于 3GB 所以它适合Lambda,只是.
好吧,这似乎是不可能的,或者更多地涉及GCP:
/tmp- 在撰写本文时限制为 2048MB - 所以 Python 客户端库upload_from_file(或_filename无法使用)boto一个最初为 设计的库AWS S3,并且已经过时boto3了一段时间。没有真正的GCP流式写入或读取方法createWriteStream()-好的文章在这里顺便说一句-但没有相应的一行代码在PythonGCS是本地文件系统一样。这不仅限于Cloud FunctionsPython Client 库所缺乏的功能,而且由于资源限制,它在 CF 中更为突出。顺便说一句,我参与了添加可写 IOBase 函数的讨论,但它没有吸引力。DataFlow手头的任务是不可能的。在我看来,来自基于云的存储的流(或类似流)读/写甚至应该包含在 Python 标准库中。
正如当时所推荐的那样,人们仍然可以使用GCSFS,它会在您将内容写入FileObj 时,在幕后为您分块提交上传。同一个团队写的s3fs。我不知道 Azure。
AFAIC,我会坚持,AWS Lambda因为输出可以适合内存 - 现在 - 但分段上传是支持任何输出大小且内存最少的方法。
想法或替代方案?
multipart我对上传与上传感到困惑resumable。后者是“流式传输”所需的 - 它实际上更像是上传缓冲流的块。
Multipart上传是在同一个 API 调用中一次性加载数据和自定义元数据。
虽然我非常喜欢GCSFS - Martin,他的主要贡献者反应非常灵敏 -,但我最近找到了一个使用该google-resumable-media库的替代方案。
GCSFS是基于核心 http API 构建的,而 Seth 的解决方案使用由 Google 维护的低级库,与 API 更改更加同步,并且包括指数备份。后者对于大/长流来说确实是必须的,因为连接可能会下降,即使在内部GCP- 我们面临着GCF.
最后,我仍然相信Google Cloud Library是添加类似流的功能的正确位置,具有基本的write和read. 它已经有了核心代码。
如果您也对核心库中的该功能感兴趣,请在这里点赞该问题- 假设优先级基于此。