我正在使用App Engine和延迟库。但偶尔我的任务会因以下错误而失败:
Permanent failure attempting to execute task
Traceback (most recent call last):
File "/base/python_lib/versions/1/google/appengine/ext/deferred/deferred.py",
line 256, in post
run(self.request.body)
File "/base/python_lib/versions/1/google/appengine/ext/deferred/deferred.py",
line 122, in run
raise PermanentTaskFailure(e)
PermanentTaskFailure: Environment variable DJANGO_SETTINGS_MODULE is undefined.
我发现post说解决方案是:
from google.appengine.ext.webapp import template
但我没有使用webapp框架,我正在使用Django。我该怎么办?
答案 0 :(得分:4)
这样的错误通常发生在您的任务依赖于某些Python路径操作或其他jiggery-pokery时,当第一个对运行时的请求是通过延迟时未执行的。您需要确保所有入口点 - 例如包含您要推迟的功能的模块 - 导入一个执行相关路径操作的模块。
或者,您可以编写自己的延迟任务处理程序,作为框架的一部分,它将已经应用了相关的修补程序。为此,只需注册处理程序并让它调用deferred.run(),传入请求的完整主体。