应用程序缓存后的Python应用程序引擎导入问题

时间:2009-12-13 06:27:01

标签: python google-app-engine caching import

我在发动机的juno(http://github.com/breily/juno/)上使用了修改版本。我遇到的问题是我有这样的代码:

import juno
import pprint

@get('/')
def home(web):
  pprint.pprint("test")

def main():
  run()
if __name__ == '__main__':
  main()

我第一次在开发环境中启动应用程序时工作正常。第二次,每次之后都找不到pprint。我收到这个错误:

AttributeError: 'NoneType' object has no attribute 'pprint'

如果我在函数中设置导入,它每次都有效:

@get('/')
def home(web):
  import pprint
  pprint.pprint("test")

所以看起来它正在缓存该函数但由于某种原因导入在使用该缓存时未被包含。我尝试删除底部的main()函数,看看是否会删除此脚本的缓存,但我遇到了同样的问题。

今晚早些时候,这段代码工作正常,我不确定是什么原因导致了这一点。任何见解都表示赞赏。

2 个答案:

答案 0 :(得分:0)

你有可能在某处重新分配名称pprint吗?我知道的模块级名称(就像你从import语句得到的那样)只有两种方式变成None,如果你自己分配它pprint = None或者在解释器关闭时,当Python的清理分配所有模块时 - 级别名称为“无”,因为它会关闭事物。

答案 1 :(得分:0)

我会这样离开。我看到Google推出了一个关于App Engine优化的幻灯片,它表示你可以通过在方法中保留导入来获得更好的性能,因此除非必要,否则不会导入它们。