在Google App Engine Python上下载大文件

时间:2015-06-22 17:57:15

标签: file google-app-engine csv download google-app-engine-python

在我的appspot网站上,我使用第三方API查询大量数据。然后,用户以CSV格式下载数据。我知道如何生成csv并下载它。问题是因为文件很大,我得到DeadlineExceededError。

我尝试过将提取截止时间增加到60(urlfetch.set_default_fetch_deadline(60))。增加它是不合理的。

在Google App Engine上解决此问题的适当方法是什么?这是我必须使用任务队列吗?

感谢。

2 个答案:

答案 0 :(得分:0)

DeadlineExceededError意味着您的传入请求花费的时间超过60秒,而不是您的UrlFetch调用。

部署代码以将CSV文件生成到使用basic or manual scaling设置的其他模块中。下载CSV的网址将为http://module.domain.com

请求可以无限期地运行在具有基本或手动缩放的模块上。

答案 1 :(得分:0)

或者,请考虑使用您的CSV内容在Google云端存储(GCS)中动态创建文件。此时,该文件驻留在GCS中,您可以生成一个URL,从中可以直接下载文件。不同的auth方法还有其他选项。

您可以在

上查看有关执行此操作的文档

https://cloud.google.com/appengine/docs/python/googlecloudstorageclient/

https://cloud.google.com/appengine/docs/python/googlecloudstorageclient/functions

重要提示:请勿使用Files API(这是在blobstore / gcs中动态创建文件的常用方法),因为它已被删除。请改用上面提到的Google云端存储客户端API。

当然,您可以在成功下载后删除生成的文件和/或在一段时间后运行cron作业以使链接/文件到期。

根据您的具体使用情况,这可能是更有效的途径。