使用Cloud功能从url下载大文件(800MB)到GCS桶



我写了一个代码,在我的本地工作,然后我试图复制相同的云功能。基本的目的是下载一个大约800 MB的大文件到一个gcs桶。

然而,我得到以下错误:函数调用被中断。错误:函数终止。处理建议:检查日志,查看终止原因。其他故障排除文档可在https://cloud.google.com/functions/docs/troubleshooting#logging

找到。在错误之前还有一个警告容器worker超过256 MiB的内存限制,在总共处理1个请求后使用了256 MiB。考虑设置更大的实例类。

似乎cloudfunction无法下载这么大的文件,我的假设是正确的吗?CF对于这样一个任务的最大限制是什么,即从URL下载数据到GCS(我知道GCS桶可以保存高达5TB的对象)

我有什么其他的选择,我试图改变代码,包括chunksize选项,但甚至不工作。

代码快照:

import requests
import pandas as pd
import time
url = ""
def main(request):
s_time_chunk = time.time()
chunk = pd.read_csv(url,
chunksize=1000 ,
usecols = ['Mk','Cn','m (kg)','Enedc (g/km)','Ewltp (g/km)','Ft','ec (cm3)','year'] )
e_time_chunk = time.time()
print("With chunks: ", (e_time_chunk-s_time_chunk), "sec")
df = pd.concat(chunk)
df.to_csv("/tmp/eea.csv",index=False)
storage_client = storage.Client(project='XXXXXXX')
bucket_name = "XXXXXXX"
bucket = storage_client.get_bucket(bucket_name)
blob = bucket.blob("eea.csv")
blob.upload_from_filename("/tmp/eea.csv")
print('File uploaded to bucket')
print("Success")
return f"OK"

"

Cloud Functions在您下载时将数据存储在内存中。即使您使用文件系统路径,它也是内存中的文件系统,并且会消耗内存。

解决方案是增加云功能的内存(尝试1或2 Gb)。如果您想要更多粒度和更多内存,请使用第二代Cloud Functions。

相关内容

  • 没有找到相关文章

最新更新