延迟任务的永久失败:执行任务时发生永久错误
最近我在应用程序的日志中看到很多这样的错误:
Permanent failure attempting to execute task
Traceback (most recent call last):
File "/base/python_runtime/python_lib/versions/1/google/appengine/ext/deferred/deferred.py", line 258, in post
run(self.request.body)
File "/base/python_runtime/python_lib/versions/1/google/appengine/ext/deferred/deferred.py", line 124, in run
return func(*args, **kwds)
File "/base/python_runtime/python_lib/versions/1/google/appengine/ext/deferred/deferred.py", line 146, in run_from_datastore
raise PermanentTaskFailure()
PermanentTaskFailure
我在阅读这个与我遇到的类似问题的帖子时,发现问题可能和Python路径处理有关。
问题在于,错误追踪信息中并没有说明到底是什么导致了这个麻烦。
我在源代码中没有做任何路径上的奇怪操作,真的找不到是什么原因造成这种问题。
相关代码:
worker.py - 包含了延迟执行的函数
admin.py - 调用延迟任务的管理控制器
stackprinterdownloader.py - 核心库,调用其他延迟任务
有没有什么线索呢?
1 个回答
2
这个异常出现的情况是因为你推迟了一个任务,而这个任务的内容太大,放不进任务队列里。所以,系统把多余的数据存到了数据存储中。但是,当它试图执行这个任务时,存放多余数据的那个实体已经不存在了,这就导致了永久性的失败。可能是在任务执行之前,你自己把那个实体删除掉了?