在我的本地开发环境中,当已添加到任务队列的App Engine任务遇到错误时,将重试该任务直到成功。但是,在生产环境中,它不是。我认为正在发生的是,因为我在urls.py中有一个自定义500处理程序,所有错误都被此捕获并且500错误从未冒泡到顶部。
这实际上可能是我的任务没有被重试的原因吗?如果是这样,有没有办法防止这种情况发生?我只希望处理程序500视图捕获错误,如果请求是用户生成的,而不是后端任务(对于那些,我希望错误冒泡并强制重试)。
答案 0 :(得分:5)
如果任务队列返回非200状态代码,则任务队列将重试该任务。如果您的“自定义500处理程序”返回200状态代码,则任务队列无法知道任务失败,因此它不会重试它。您需要修改处理程序以返回相应的状态代码 - 无论如何都应该这样做,包括用户页面。