如何在GAE中用Python执行一次性初始化?

如何在GAE中用Python执行一次性初始化?,python,google-app-engine,Python,Google App Engine,我是一名GAE/Python新手。我有许多系统和应用程序变量,我想设置一次,并将它们应用于我的应用程序中的所有.py文件。有人能告诉我如何做到这一点吗(有一个只在应用程序启动时运行一次的地方)?有点像在其他应用程序中使用配置文件 我正在运行Python 2.7。在GAE上,模块在运行时()中只加载一次,因此您可以创建一个包含所有初始化、全局变量等的模块。如果在app.yaml中使用threadsafe=true,请确保正确处理这些全局变量(以线程安全的方式) 注意,在新实例上再次执行初始化。如果

我是一名GAE/Python新手。我有许多系统和应用程序变量,我想设置一次,并将它们应用于我的应用程序中的所有
.py
文件。有人能告诉我如何做到这一点吗(有一个只在应用程序启动时运行一次的地方)?有点像在其他应用程序中使用配置文件


我正在运行Python 2.7。

在GAE上,模块在运行时()中只加载一次,因此您可以创建一个包含所有初始化、全局变量等的模块。如果在app.yaml中使用threadsafe=true,请确保正确处理这些全局变量(以线程安全的方式)


注意,在新实例上再次执行初始化。如果您的init进程很长(秒),最好的方法是预计算它,存储在数据存储中,然后从数据存储中再次加载到init模块中。

appengine上2.7的推荐方法之一是在app.yaml中设置环境变量


(与这里发布的其他答案一样,这不是唯一的方法。)

另一种方法是使用lib_config定义并覆盖您自己的常量和挂钩。

如果我能很好地理解你的问题,我想你可以在GAE使用


在这种情况下,您实际上可以定期初始化您需要的所有var和方法。

感谢您的快速响应。我只是试图设置一些文件夹路径,并用允许的值预先填充一些列表,我不想多次填充这些列表。例如,我想初始化允许状态列表,如下所示:StatusList=['Pending Translation','Pending Review','Published','etc'];这会被视为环境变量吗?app.yaml中的代码是什么样子的?谢谢。你忘记了原来问题中的那个细节;-)列表在yaml文件中有效,但在app.yaml中使用env_变量无效。因此,这不适合您的要求。我使用一个单独的settings.yaml来提供我需要的更多详细配置。如果我理解正确,setting.yaml可能就是我需要的。基本上,我希望在某些事件发生时执行特定功能,例如启动应用程序、初始化会话、用户登录、某些变量的值发生时等。我在哪里可以找到有关settings.yaml和GAE提供的各种事件触发器的更多信息?谢谢。您可以创建任何想要的yaml文件,并使用代码部署它。然后,您需要在自己的代码中打开并解析yaml文件,只要创建一个新文件夹(例如name=“init”)并添加一个init.py文件并在该文件中声明全局变量就可以了吗?这些全局变量是否在该应用程序的所有模块中都是全局的?(请原谅我的无知,如果我走远了。)谢谢。你不需要创建新文件夹。您可以只创建init.py脚本,并在其中声明所有变量和全局变量,然后将其导入到应用程序模块中。这些全局变量在一个instance中是全局的—因此,如果您更改全局变量的值,它不会在整个应用程序中更改(在应用程序运行的多个实例中),而只在您更改变量的一个实例上更改。如果要在整个应用程序中使用和全局,必须使用数据存储/memcache,这是全局一致的。您需要知道预热请求并不总是发送到新实例。当新实例由用户请求启动时,该用户请求将直接发送到新实例,绕过预热请求。因此,如果每个实例都必须运行初始化代码,那么预热请求就不是放置此代码的合适位置。