我如何知道我的代码是在GAE上运行还是在本地运行?

时间:2011-06-21 20:21:47

标签: python google-app-engine import

我需要一些导入和语句才能从gdata中获取一些加密模块以加载到我的GAE Python SDK中:

from google.appengine.tools.dev_appserver import HardenedModulesHook
HardenedModulesHook._WHITE_LIST_C_MODULES += ['_counter']

但是这个导入在GAE上部署时不起作用(也不需要),只在本地。

如何测试代码是在GAE还是本地运行,以便我可以有条件地执行此导入或其他本地特定的内容?

3 个答案:

答案 0 :(得分:2)

我在我的一些宠物项目中使用它。不记得我在哪里得到它。

import os
if 'SERVER_SOFTWARE' in os.environ and os.environ['SERVER_SOFTWARE'].startswith('Dev'):

答案 1 :(得分:2)

如果导入实际上不起作用,因为它会抛出ImportError,那么您最好选择它来尝试/除错误。

try:
    from google.appengine.tools.dev_appserver import HardenedModulesHook
    HardenedModulesHook._WHITE_LIST_C_MODULES += ['_counter']
except ImportError:
    HardenedModulesHook = None

你可以在except块中pass,但这样做可以让你检查HardenedModulesHook引用并执行一些应用程序逻辑。

答案 2 :(得分:0)

你说导入在GAE上部署时不起作用,那为什么不简单地做这样的事情呢?

try:
    from google.appengine.tools.dev_appserver import HardenedModulesHook

HardenedModulesHook._WHITE_LIST_C_MODULES += ['_counter']