2010-03-23 2 views
3

App Engine과 지연 라이브러리를 사용하고 있습니다. 그러나 가끔 내 작업은 다음 오류와 함께 실패하면서 : App Engine 지연 라이브러리의 PermanentTaskFailure

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 

하지만, 난 장고를 사용합니다. 무엇을 시도 할 수 있습니까?

답변

4

이와 같은 오류는 일반적으로 런타임에 대한 첫 번째 요청이 지연을 통해 이루어질 때 작업이 수행되지 않는 일부 Python 경로 조작 또는 기타 jiggery-pokery에 따라 작업이 달라질 때 발생합니다. 모든 진입 점 (예 : 지연 기능을 포함하는 모듈)이 관련 경로 조작을 수행하는 모듈을 가져 오는지 확인해야합니다.

또는 프레임 워크의 일부인 관련 태스크 패치가 이미 적용된 자체 지연 태스크 핸들러를 작성할 수 있습니다. 이를 위해 핸들러를 등록하고 deferred.run()을 호출하여 요청의 전체 본문을 전달하게합니다.

+0

지연 호출이'main.py'를 통해 실행되지 않기 때문에'use_library ('django', '1.0')'지연 메소드가있는 모듈에 올바르게 추가해야한다는 것을 이해하고 있습니까? 지연 호출을 훨씬 느리게 만들지 않습니까? – noio

+0

예 또는 그보다 나은 설정 및 경로 조작 기계를 모든 진입 점에서 가져 오는 단일 파일에 저장하십시오. use_library는 코드를 느리게 만들지는 않지만 app-engine-patch (또는 사용중인 다른 라이브러리)도 가져와야합니다. app-engine-patch는 SDK에 변경 사항을 적용하여 SDK가없는 경우 중단되도록합니다. –

+0

감사합니다. 사실,'import main'을 사용할 수 있습니까? 'main __ (__name__ == '__main __':')으로 감싸기 때문에'main()'을 제외한 모든 것들을'main.py' 할 것입니다. – noio