python – 通过公共HTTP自动检索大文件到Google云端存储

出于天气处理的目的,我希望自动检索Google云端存储中的每日天气预报数据.

这些文件在公共HTTP URL(http://dcpc-nwp.meteo.fr/openwis-user-portal/srv/en/main.home)上可用,但它们非常大(在30到300兆字节之间).文件大小是主要问题.

在查看以前的stackoverflow主题之后,我尝试了两种不成功的方法:

1 /首次尝试通过Google App Engine中的urlfetch

    from google.appengine.api import urlfetch

    url = "http://dcpc-nwp.meteo.fr/servic..."
    result = urlfetch.fetch(url)

    [...] # Code to save in a Google Cloud Storage bucket

但是我在urlfetch行上收到以下错误消息:

DeadlineExceededError:等待来自URL的HTTP响应时超过截止时间

2 /通过云存储转移服务进行第二次尝试

根据文档,可以通过Cloud Storage Transfert Service直接将HTTP数据检索到云存储中:
https://cloud.google.com/storage/transfer/reference/rest/v1/TransferSpec#httpdata

但是在下载之前它需要文件的大小和md5.此选项在我的情况下不起作用,因为该网站不提供这些信息.

3 /有什么想法吗?

您是否看到任何解决方案可以自动将HTTP上的大文件检索到我的云存储桶中?

最佳答案 3 /使用Compute Engine实例的变通方法

由于无法使用App Engine或直接使用云存储从外部HTTP检索大型文件,因此我使用了一个始终运行的Compute Engine实例的变通方法.

此实例会定期检查新的天气文件是否可用,下载并将其上载到云存储桶.

出于可扩展性,维护和成本原因,我宁愿只使用无服务器服务,但希望:

>它适用于新的f1-micro计算引擎实例(无需额外包装,如果全天候运行则仅需4美元/月)
>如果实例和存储桶位于同一区域(0美元/月),则从计算引擎到Google云存储的网络流量是免费的

点赞