【发布时间】:2011-02-07 05:39:53
【问题描述】:
我正在尝试构建和调试我的第一个 GAE 应用程序,并且已经从 Stackoverflowers 的强大支持中受益,从而使我能够在默认队列上处理任务。谢谢!
但是,我想使用队列来演示如何在后台执行一些“长时间”工作。我的想法是:
- 接收处理大文件的请求。
- 存储文件并将任务排入队列。
- 返回响应。
- 在后台处理文件。
- 通过 Channel 让客户知道工作已经完成!
我有这一切工作,但有一个问题。在我的开发服务器上,任务队列似乎没有在后台处理任务。为了模拟长时间运行的工作,我只是在那里睡觉。
def post(self):
time.sleep(60)
#use a channel to let the client know we're done
GAE 开发服务器似乎是单线程的。在项目从队列中处理出来之前它根本不响应?这个假设正确吗?有什么想法吗?
谢谢
添加代码示例:
#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')
【问题讨论】:
-
你能发布你的代码的相关部分吗?
-
完成 - 添加了代码。希望这就够了。
标签: python google-app-engine task-queue channel-api