在我的appspot网站上,我使用第三方API查询大量数据。然后,用户以CSV格式下载数据。我知道如何生成csv并下载它。问题是因为文件很大,我得到DeadlineExceededError。
我尝试过将提取截止时间增加到60(urlfetch.set_default_fetch_deadline(60))。增加它是不合理的。
在Google App Engine上解决此问题的适当方法是什么?这是我必须使用任务队列吗?
感谢。
答案 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作业以使链接/文件到期。
根据您的具体使用情况,这可能是更有效的途径。