Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 应用程序引擎上的RPC是否将本地化为单个实例?_Python_Google App Engine - Fatal编程技术网

Python 应用程序引擎上的RPC是否将本地化为单个实例?

Python 应用程序引擎上的RPC是否将本地化为单个实例?,python,google-app-engine,Python,Google App Engine,我正在使用RPC异步获取多个URL。我使用一个全局变量来跟踪完成情况,并注意到在RPC调用完成之前和之后,该全局变量的内容有着根本不同的内容 感觉我错过了一些明显的东西。。。在进行回调时,rpc.wait()是否可能导致在新实例上加载应用程序上下文 这是基本模式 aggregated_results = {} def aggregateData(sid): # local variable tracking results aggregated_results[sid] = [

我正在使用RPC异步获取多个URL。我使用一个全局变量来跟踪完成情况,并注意到在RPC调用完成之前和之后,该全局变量的内容有着根本不同的内容

感觉我错过了一些明显的东西。。。在进行回调时,rpc.wait()是否可能导致在新实例上加载应用程序上下文

这是基本模式

aggregated_results = {}

def aggregateData(sid):
    # local variable tracking results
    aggregated_results[sid] = []

    # create a bunch of asynchronous url fetches to get all of the route data
    rpcs = []
    for r in routes:
        rpc = urlfetch.create_rpc()
        rpc.callback = create_callback(rpc,sid)
        urlfetch.make_fetch_call(rpc, url)
        rpcs.append(rpc)

    # all of the schedule URLs have been fetched. now wait for them to finish
    for rpc in rpcs:
        rpc.wait()

    # look at results
    try:
        if len(aggregated_results[sid]) == 0:
            logging.debug("We couldn't find results for transaction")
    except KeyError as e:
        logging.error('aggregation error: %s' % e.message)
        logging.debug(aggregated_results)

    return aggregated_results[sid]


def magic_callback(rpc, sid):

    # do some work to parse the result
    # of the urlfetch call...
    #  <hidden>
    #

    try:
        if len(aggregated_results[sid]) == 0:
            aggregated_results[sid] = [stop]
        else:
            done = False
            for i, s in enumerate(aggregated_results[sid]):
                if stop.time <= s.time:
                        aggregated_results[sid].insert(i,stop)
                        done = True
                        break
            if not done:
                aggregated_results[sid].append(stop)
     except KeyError as e:
        logging.error('aggregation error: %s' % e.message)
aggregated_results={}
def聚合数据(sid):
#局部变量跟踪结果
聚合结果[sid]=[]
#创建一组异步url回迁来获取所有路由数据
rpcs=[]
对于路线中的r:
rpc=urlfetch.create_rpc()
rpc.callback=创建_回调(rpc,sid)
urlfetch.make_fetch_调用(rpc,url)
rpcs.append(rpc)
#已获取所有计划URL。现在等待他们完成
对于rpc中的rpc:
rpc.wait()
#看看结果
尝试:
如果len(聚合结果[sid])==0:
debug(“我们找不到事务的结果”)
除KeyError外,如e:
logging.error('聚合错误:%s'%e.message)
logging.debug(聚合结果)
返回聚合结果[sid]
def magic_回调(rpc、sid):
#做一些工作来解析结果
#urlfetch调用的。。。
#  
#
尝试:
如果len(聚合结果[sid])==0:
聚合结果[sid]=[stop]
其他:
完成=错误
对于枚举中的i,s(聚合的_结果[sid]):

如果stop.time,则整个代码集将仅在单个实例上运行。我假设您是从一个任务而不是一个面向前端的请求运行此操作?您似乎缺少代码,
aggregated_results
aggregated_results的范围是什么?我假设aggregated_results应该是一个闭包,但我看不到它是如何定义的,也看不到它的范围。我已经更新了代码示例,使其更加准确。此代码在web请求处理程序上运行。