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