첫 번째 GAE 애플리케이션을 빌드하고 디버깅하려고하며 이미 기본 대기열에서 처리중인 작업을 처리하는 데 Stackoverflowers의 놀라운 지원을 활용했습니다. . 감사!Google App Engine의 채널 및 TaskQueues (클라이언트 디버깅)
그러나 대기열을 사용하여 백그라운드에서 '긴'작업을 수행하는 방법을 보여주고 싶습니다. 내 생각은 :
- 큰 파일을 처리하라는 요청을받습니다.
- 파일을 저장하고 작업을 대기열에 넣습니다.
- 응답을 반환하십시오.
- 파일을 백그라운드에서 처리합니다.
- 고객이 채널을 통해 작업이 완료되었음을 알립니다.
나는이 모든 것이 작동하지만 하나의 문제가 있습니다. 내 개발 서버에서 작업 대기열은 백그라운드에서 작업을 처리하지 않는 것 같습니다. 장기간 작업을 시뮬레이트하기 위해 방금 잠을 자 았습니다.
def post(self):
time.sleep(60)
#use a channel to let the client know we're done
GAE 개발 서버는 단일 스레드 인 것처럼 보입니다. 항목이 대기열에서 처리 될 때까지는 전혀 응답하지 않습니다. 이 가정이 맞습니까? 어떤 아이디어?
감사 코드 exanples 추가
:#code to enqueue task
taskqueue.add(url='/processSubmission', params={'key': activity.key() }, transactional=False)
#class that processes queued work
class ProcessSubmission(webapp.RequestHandler):
def post (self):
time.sleep(60)
activity = db.get(db.Key(encoded=self.request.get('key')))
activity.approved = True
activity.put()
channel.send_message(activity.userid, 'Wahoo! we are done')
코드의 관련 부분을 게시 할 수 있습니까? – systempuntoout
완료 - 코드를 추가했습니다. 희망이 충분합니다. – ConfusedNoob