2011-01-06 70 views
4

如果这是一个简单或基本的问题,我是一个真正的编码n00b,所以很抱歉。异步Python类

我在Python,Webapp,Appengine上编码。

我的问题是否可以在我写出页面后继续工作?这是做最好的方法吗?基本上,当有人在我的网站上创建一个列表(www.7bks.com)时,我想继续努力,在他们刚刚选择的书籍上进行一些“后期处理”。

目前,我有这样的事情(伪!)

class InputList(webapp.RequestHandler): 
    def post(self): 
     #get books data from the post and put in datastore 
     list = List() 
     list = self.request.get('books') 
     list.put() 

     #redirect the user to the new list 
     self.redirect("http://www.7bks.com/list/&s" % list.id) 

现在,我有一些慢(包括API调用)后处理我想要做的每本书在列表中。我不想放慢重定向用户和生成列表页面,因为我的后处理不会直接影响列表页面。我可以这样做吗?

class InputList(webapp.RequestHandler): 
    def post(self): 
     #get books data from the post and put in datastore 
     list = List() 
     list = self.request.get('books') 
     list.put() 

     #redirect the user to the new list 
     self.redirect("http://www.7bks.com/list/&s" % list.id) 

     #carry on working behind the scenes independently of the user 
     for book in list: 
      data = heavyprocessing(book) 

这是否会导致我的应用程序有效地服务重定向,然后继续在幕后工作?

有没有更好的方法来做到这一点?我知道我可以使用CRON,但是在创建列表之后我很快就会喜欢这些繁重的处理过的数据,但不会立即。感觉像克朗可能不是正确的答案(除非我有一个CRON脚本运行每分钟左右,并检查新书处理?)

我知道这不是真的异步我的问题,但我想不出一个很好的方式来描述它。我确定这种东西有一些标准术语,但我不知道它是什么。谢谢:)

汤姆

回答

5

退房的Task Queue API

任务或消息队列往往是进行某种由用户请求发起的工作的方式,但不一定在请求执行的时间范围内完成。

+0

太棒了!谢谢詹姆斯,我认为这基本上就是我要找的。对不起,我知道这将是一个简单的修复! – tomcritchlow 2011-01-06 20:03:59