2012-03-06 4 views
1

나는 다음을 수행하십시오GAE 지연 기능을 사용하는 방법은 무엇입니까?

from google.appengine.ext import deferred 

def send_message(client_id, message): 
    logging.info("sending message...") 

class MyHandler(webapp.RequestHandler): 
    def get(self, field_name): 
     ... 
     scUpdate = { 
         'val': value, 
         'name': field_name_converted 
        } 
     message = simplejson.dumps(scUpdate)      
     deferred.defer(send_message, client_id, message, _countdown=random.randrange(0, 5, 1)) 

PermanentTaskFailure: 'module' object has no attribute 'send_message' 

여기에 어떤 문제가 점점?

업데이트. 같은 문제가있는 것 같습니다 - PermanentTaskFailure: 'module' object has no attribute 'Migrate' -하지만 그 문제를 해결하는 방법을 이해하지 않습니다.

+2

나는 그 링크 된 대답에 대한 Nick의 의견이 분명하다고 생각했다. app.yaml의 핸들러로 직접 사용하는 모듈에 정의 된 함수를 사용할 수 없다. 다른 파일로 이동하여 가져옵니다. –

+0

@DanielRoseman, 가능한 유일한 접근 방법입니까? 따라서 두 개의 다른 파일에서 동일한 기능을 사용할 수 있습니까? 대신 Task Queue를 직접 사용하는 것이 더 좋을까요? –

+0

두 파일로 된 이유는 무엇입니까? 코드를 별도의 파일로 옮기고 복사하지 마십시오. –

답변

7

https://developers.google.com/appengine/articles/deferred를 참조하십시오 이연 라이브러리

  • 제한을 당신은 요청 처리기 모듈의 메서드를 호출 할 수 없습니다. deferred.defer 통해 호출

deferred.defer 함수가 호출 요청 핸들러 같은 동일한 모듈하지한다.

+0

좋습니다, 감사합니다. 대신'taskqueue'를'카운트 다운 '과 함께 사용했는데 잘 작동합니다. –

관련 문제