使用NameError进行异常处理

时间:2010-11-05 16:03:42

标签: python google-app-engine exception-handling

我想将新输入附加到列表SESSION_U而不删除其内容。我试试这个:

... 
        try:
            SESSION_U.append(UNIQUES)
        except NameError:
            SESSION_U = []
            SESSION_U.append(UNIQUES)
...

我认为首先尝试我会创建并附加NameErrorSESSION_U列表;第二次try会起作用。但事实并非如此。你知道为什么吗?如果这不清楚,请告诉我,我会发布脚本。感谢。

修改

    # save string s submitted from form to list K:
    K = []        
    s = self.request.get('sentence')
    K.append(s)                              
    # clean up K and create 2 new lists with unique items only and find their frequency
    K = K[0].split('\r\n')     
    UNIQUES = f2(K)
    COUNTS = lcount(K, UNIQUES)
    # append UNIQUES and COUNTS TO session lists. 
    # Session lists should not be initialized with each new submission
    SESSION_U.append(UNIQUES)
    SESSION_C.append(COUNTS)

如果我在SESSION_U之后将SESSION_CK = []放在每个提交的内容被删除之后;如果不;我得到NameError。我正在寻找有关处理这种情况的标准方法的帮助。谢谢。 (我正在使用Google App Engine)

1 个答案:

答案 0 :(得分:0)

您发布的代码似乎包含在请求处理程序中。您对此SESSION_U列表有何要求?显然,您希望在请求之间保留它,但有几种方法可以做到这一点,最佳选择取决于您的要求。

我怀疑您要将SESSION_U存储在datastore中。您需要使用transaction以原子方式更新列表(因为多个请求可能会尝试同时更新它)。在数据存储区中存储SESSION_U会使其持久(即,它会在请求中保留)。

或者,如果您不担心会定期丢失列表,则可以使用memcache。您甚至可以将列表存储在全局变量中(由于app caching,它将在特定实例的请求之间保持,并在实例终止时丢失)。