2
我正在嘗試構建和調試我的第一個GAE應用程序,並且已經從Stackoverflowers的真棒支持中獲益,以獲取我在默認隊列上處理任務的位置。謝謝!Google App Engine中的通道和TaskQueue(客戶端調試)
但是,我想使用隊列來演示如何在後臺執行一些「長期」工作。我的想法是:
- 接收處理大文件的請求。
- 存儲文件並排入任務。
- 返回響應。
- 在後臺處理文件。
- 讓客戶通過渠道知道工作已經完成!
我有這一切工作,但一個問題。在我的開發服務器上,任務隊列似乎不在後臺處理任務。爲了模擬長時間運行的工作,我剛剛在那裏彈出睡眠。
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 2011-02-07 08:11:45
完成 - 添加了代碼。希望就夠了。 – ConfusedNoob 2011-02-07 18:14:09