Django AppEngine延迟库中的PermanentTaskFailure

Django AppEngine延迟库中的PermanentTaskFailure,django,google-app-engine,scheduled-tasks,Django,Google App Engine,Scheduled Tasks,我正在使用应用程序引擎和延迟库。但偶尔我的任务会失败,并出现以下错误: 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)

我正在使用应用程序引擎和延迟库。但偶尔我的任务会失败,并出现以下错误:

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.
我发现一种说法,解决办法是:

from google.appengine.ext.webapp import template 

但是我没有使用webapp框架,我使用的是Django。我可以尝试什么?

当您的任务依赖于某些Python路径操作或其他在延迟运行时的第一个请求时未执行的诡计时,通常会发生类似这样的错误。您需要确保所有入口点(例如,包含您正在延迟的函数的模块)都导入一个执行相关路径操作的模块


或者,您可以编写自己的延迟任务处理程序,作为框架的一部分,它已经应用了相关补丁。为此,只需注册处理程序并让它调用deferred.run(),传入请求的完整正文。

那么我是否正确理解应该向deferred方法所在的模块中添加
use_library('django','1.0')
,因为deferred调用不会通过
main.py
?这难道不会使延迟调用慢得多吗?是的,或者更好,将所有设置和路径操作机制放在一个文件中,从任何入口点导入。使用_库不会使代码变慢,但您还需要确保导入应用程序引擎补丁(或您正在使用的任何其他库)。任何减速都是不可避免的-应用程序引擎修补程序正在对SDK进行更改,如果SDK不存在,将导致其损坏。好的,谢谢。实际上,我可以使用
导入main
吗?除了运行
main()
之外,这会完成
main.py所做的所有事情吗?因为它被包装在
中,如果
,它会工作,是的。不过,这可能会导致递归导入问题。