我正在尝试构建和调试我的第一个GAE应用程序,并且已经从Stackoverflowers的强大支持中获益,以获得我在默认队列中处理任务的位置。谢谢!
但是,我想使用队列来演示如何在后台进行一些“长期”工作。我的想法是:
我有这一切,但有一个问题。在我的开发服务器上,任务队列似乎不在后台处理任务。为了模拟长时间的工作,我只是在那里睡了一会儿。
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')
答案 0 :(得分:2)
是的,App Engine dev_appserver是单线程的,一次只处理一个请求。但是,面向用户的请求应在开始处理任务队列请求之前返回。