1

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

我尝试将获取截止日期增加到 60 (urlfetch.set_default_fetch_deadline(60))。进一步增加它似乎不合理。

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

谢谢。

4

2 回答 2

0

DeadlineExceededError 表示您的传入请求超过 60 秒,而不是您的 UrlFetch 调用。

将生成 CSV 文件的代码部署到您使用基本或手动缩放设置的不同模块中。下载 CSV 的 URL 将变为http://module.domain.com

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

于 2015-06-23T10:37:32.197 回答
0

或者,考虑使用您的 CSV 内容在 Google Cloud Storage (GCS) 中动态创建文件。此时,该文件位于 GCS 中,您可以生成一个 URL,他们可以从该 URL 直接下载该文件。对于不同的身份验证方法,还有其他选项。

您可以在以下位置查看有关执行此操作的文档

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

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

重要提示:不要使用 Files API(这是在 blobstore/gcs 中动态创建文件的常用方法),因为它已被弃用。请改用上面引用的 Google Cloud Storage Client API。

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

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

于 2015-06-30T20:16:16.057 回答