Google app engine 为GAE中的URL获取服务的异步请求设置多个回调?

Google 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

我正在使用谷歌应用程序引擎(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”打印内存引用两次xx2

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)