出于天气处理的目的,我希望在谷歌云存储中自动检索每日天气预报数据。在
这些文件可以在公共httpurl(http://dcpc-nwp.meteo.fr/openwis-user-portal/srv/en/main.home)上找到,但是它们非常大(在30到300兆字节之间)。文件大小是主要问题。在
在看过前面的stackoverflow主题之后,我尝试了两种不成功的方法:
1/在谷歌应用引擎中通过urlphetch首次尝试
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
但是我在urlphetch行上收到以下错误消息:
DeadlineExceededError:等待来自URL的HTTP响应时超过了截止日期
通过云存储传输服务每秒尝试2次
根据文档,可以通过云存储传输服务将HTTP数据直接检索到云存储中: https://cloud.google.com/storage/transfer/reference/rest/v1/TransferSpec#httpdata
但是在下载之前它需要文件的大小和md5。这个选项在我的案例中不起作用,因为网站没有提供这些信息。在
有什么想法吗?
你有没有看到任何解决方案可以自动检索HTTP上的大文件到我的云存储桶?在
目前,Google的传输服务需要MD5和size;我们知道在像您这样的情况下,这可能很难处理,但不幸的是,我们今天没有一个好的解决方案。在
除非你能通过自己下载文件(临时)来获得文件的大小和MD5,否则我想这是你能做的最好的了。在
3/使用计算引擎实例的解决方法
由于不可能使用appengine或直接使用云存储从外部HTTP检索大文件,所以我使用了一个始终运行的计算引擎实例的解决方案。在
该实例定期检查是否有新的天气文件可用,下载并上传到云存储桶中。在
出于可扩展性、维护和成本的考虑,我宁愿只使用无服务器服务,但希望:
使用curl-I命令可以轻松快速地检索文件的md5和大小,如链接https://developer.mozilla.org/en-US/docs/Web/HTTP/Range_requests中所述。
然后可以将存储传输服务配置为使用该信息。在
另一个选择是使用无服务器云功能。它可能看起来像下面的Python代码。在
相关问题 更多 >
编程相关推荐