在执行许多(~10K)数据库更新时使用GAE获取“DeadlineExceededError”

时间:2013-04-27 06:09:55

标签: google-app-engine google-cloud-sql

我在GAE + Google Cloud SQL上使用Django 1.4 - 我的代码完全正常(在开发时使用本地sqlite3 db for Django)但是当我尝试“刷新”DB时,服务器错误(500)会出现问题。这涉及解析某些文件并创建~10K记录并保存它们(我使用commit_on_success将它们保存在批处理中)。

有什么建议吗?

3 个答案:

答案 0 :(得分:0)

对于花费超过30秒的任务,您应该使用task queue

此外,当批处理操作太大时,数据库操作也会超时。尝试使用较小的批次。

答案 1 :(得分:0)

60秒后,前端请求会引发此错误。 (its increased

解决方案选项:

  1. 使用task queue(再次施加10分钟的时间限制,这实际上已足够)。
  2. 将您的任务分成小批量。 我们是如何做到的:我们将客户端分成较小的块并重复调用它们。
  3. 两种解决方案都运行良好,取决于您如何进行这些调用并希望得到结果。 Taskqueue不会将结果返回给客户端。

答案 2 :(得分:-1)

Google应用引擎拥有请求的最长时间。如果请求超过30秒,则会引发此错误。如果要上载大量数据,请直接从管理控制台导入,或将请求拆分为较小的块,或使用命令行python manage.py dbshell从计算机上传数据。