GAE中的TaskTooLargeError是什么?

时间:2013-05-28 08:49:22

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

我很惊讶地看到这个错误(甚至没有记录在配额中)......

超过100KB,我收到此错误:

TaskTooLargeError: Task size must be less than 102400

关于如何处理这个的任何想法?

上下文:电子邮件正文(HTML)作为参数传递给任务队列。

1 个答案:

答案 0 :(得分:5)

您应该将html的正文存储在数据存储区中,然后将该实体的密钥传递给该任务。

如果您想要传递给任务的模型实例,则采用相同的方法。您通常传递实体的密钥,然后任务可以获取它。

通常,如果我想将一个方法作为一个任务推迟,我会为一个以键作为参数的实体创建一个类方法,然后它获取该对象,然后调用该对象的实际方法。我可以直接在实体上调用方法,也可以在需要时推迟。

e.g。

@classmethod
def defer_cancel_supervisor(cls,contract_key):

    contract = qtrack.models.Contract.get(db.Key(contract_key))
    contract.cancel_supervisor('contract cancelled')