【问题标题】:Task Queue solution?任务队列解决方案?
【发布时间】:2014-03-10 17:08:33
【问题描述】:

我以前从未使用过任务队列。 我在尝试从数据存储区获取所有联系人的报告时遇到问题。

代码是:

allContactos=db.GqlQuery("select * from contactsDB").run(batch_size=1000)
for contactN in allContactos:
    ... (here I put all the fields in csv format)

问题是由于大量联系人,我收到“500 服务器错误”。

我的问题是,尝试使用任务队列解决这个问题是一个好方法吗? 你能给我一些提示以在许多任务中分离该查询吗?

问候!

【问题讨论】:

  • 如果你总是在数据存储模型中的所有条目之间进行操作,你可以使用mapreduce。

标签: python google-app-engine task-queue


【解决方案1】:

您无需将查询拆分为多个任务。您可以开始一项任务。如果此任务需要 10 分钟以上,您将必须使用 backend 来运行此任务。

您将在任务完成后通过电子邮件将文件发送给用户,或者在您的应用/网站中创建一个链接,以便在文件准备就绪时下载该文件。

【讨论】:

  • 感谢您的回答。我怎么知道任务何时完成?以及如何创建链接以获取任务结果?
  • 请注意,如果需要超过 10 分钟,您不一定需要后端。假设您可以使用分页(页面标记)查询一个巨大的列表,并且一个任务队列一个接一个,每个任务队列一页。但输出必须是类似于驱动器文本文件的内容,并且您不断追加。
  • 您的任务在其中的最后一行代码执行时完成。例如,当任务完成写入文件时,您可以向自己(或用户)发送电子邮件。至于链接,您的应用程序可以定期查询服务器以查看文件是否可用。当它找到一个文件时,它可以显示一个链接来检索它。
猜你喜欢
  • 2018-11-23
  • 2012-10-14
  • 2018-12-20
  • 2021-08-21
  • 2021-10-16
  • 1970-01-01
  • 1970-01-01
  • 2011-12-18
  • 2012-04-28
相关资源
最近更新 更多