Google app engine 为GAE中的URL获取服务的异步请求设置多个回调?
我正在使用谷歌应用程序引擎(GAE),python 2.7 GAE接收到GET请求,并且需要由执行多个作业。如果“searchPortals”中只有一个对象{A()},“handleCallBack”可以正常工作。但是,当我在“searchPortals”{A()&B()}中有两个对象时,“handleCallBack”为B()提供了两次对“portalObject”的引用 1>如何获取两次“portalObject”的引用,一次用于A(),一次用于B()? 2>此外,如果愿意,我希望对“portalObjects”中的所有对象使用单个“handleCallBack”实现? 注意- “初始Id”打印两个内存引用,如xx1和xx2 “回调id”打印内存引用两次xx2Google app engine 为GAE中的URL获取服务的异步请求设置多个回调?,google-app-engine,callback,urlfetch,asynccallback,google-app-engine-python,Google App Engine,Callback,Urlfetch,Asynccallback,Google App Engine Python,我正在使用谷歌应用程序引擎(GAE),python 2.7 GAE接收到GET请求,并且需要由执行多个作业。如果“searchPortals”中只有一个对象{A()},“handleCallBack”可以正常工作。但是,当我在“searchPortals”{A()&B()}中有两个对象时,“handleCallBack”为B()提供了两次对“portalObject”的引用 1>如何获取两次“portalObject”的引用,一次用于A(),一次用于B()? 2>此外,如果愿意,我希望对“por
class SearchHandler(webapp2.RequestHandler):
def __init__(self,*args, **kwargs):
super(SearchHandler,self).__init__(*args, **kwargs)
self.result=[]
self.searchPortals = [A(), B()]
def handleCallBack(self,rpc,portalObject):
logging.info("call back id " + str(id(portalObject)))
def getSearchResult(self):
rpcs=[]
searchKeyword=self.request.get('searchString')
for portal in self.searchPortals:
rpc = urlfetch.create_rpc(deadline=5)
rpc.callback = lambda: self.handleCallBack(rpc, portal)
urlfetch.make_fetch_call(rpc, portal.getSearchURL(searchKeyword))
logging.info('initial id ' + ' ' + str(id(portal)))
rpcs.append(rpc)
for rpc in rpcs:
rpc.wait()
#do some processing
app = webapp2.WSGIApplication([
webapp2.Route(r'/search', methods=['GET'], handler='Main.SearchHandler:getSearchResult')
], debug=False)
Daniel提到的更改解决了这个问题。awesome。。这就解决了问题。
rpc.callback = lambda portal=portal: self.handleCallBack(rpc, portal)