我正在尝试迁移一个AWS Lambda
写入Python
CF的函数
即时解压缩并逐行阅读
在每一行上执行一些光变换
将未压缩的输出(一次一行或块)写入 GCS
输出 > 2GB - 但略小于 3GB,所以它适合Lambda
,只是.
好吧,这似乎是不可能的,或者更多地涉及GCP
:
未压缩的无法放入内存或/tmp
- 在撰写本文时限制为 2048MB - 因此无法使用Python 客户端库upload_from_file
(或_filename
)
有这篇官方论文,但令我惊讶的是,它指的是boto
一个最初为 设计的库AWS S3
,并且已经过时boto3
了一段时间。没有真正的GCP
流式写入或读取方法
Node.js的有一个简单的createWriteStream()
-好的文章在这里顺便说一句-但没有相应的一行代码在Python
可恢复的媒体上传听起来很像,但很多代码在 Node 中处理要容易得多
AppEngine 有云存储,但在它之外不可用 - 并且已经过时
在一个工作包装器上几乎没有例子,用于逐行写入文本/纯数据,就像GCS
是本地文件系统一样。这不仅限于Cloud Functions
Python Client 库所缺乏的功能,而且由于资源限制,它在 CF 中更为突出。顺便说一句,我参与了添加可写 IOBase 函数的讨论,但它没有吸引力。
显然使用虚拟机或DataFlow
手头的任务是不可能的。
在我看来,来自基于云的存储的流(或类似流)读/写甚至应该包含在 Python 标准库中。
正如当时所推荐的那样,人们仍然可以使用GCSFS,它会在您将内容写入FileObj 时,在幕后为您分块提交上传。同一个团队写道s3fs
。我不知道 Azure。
AFAIC,我会坚持,AWS Lambda
因为输出可以适合内存 - 现在 - 但分段上传是支持任何输出大小且内存最少的方法。
想法或替代方案?
叮当猫咪
慕勒3428872
相关分类