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
在GAE/Python中放置一次性和每次代码的最佳位置是哪里?_Python_Google App Engine_Webapp2 - Fatal编程技术网

在GAE/Python中放置一次性和每次代码的最佳位置是哪里?

在GAE/Python中放置一次性和每次代码的最佳位置是哪里?,python,google-app-engine,webapp2,Python,Google App Engine,Webapp2,我是谷歌应用引擎和Python的新手。我很难理解一些关于在谷歌应用程序引擎上运行的Python应用程序的基本问题 如果我想执行代码: 对于每个传入的请求,我应该将其放在哪里?我们正在捕获会话信息,这些信息涉及哪些人何时查看哪些页面,以及这些页面做了什么,等等 只有一次应用程序启动时,我应该把它放在哪里?我需要初始化应用程序中许多地方使用的许多应用程序/系统变量。把代码放在哪里最合适 如果有人能给我指一些文档或教程,说明GAE/Python应用程序的最佳体系结构实践是什么,而没有编程方面的基础知识

我是谷歌应用引擎和Python的新手。我很难理解一些关于在谷歌应用程序引擎上运行的Python应用程序的基本问题

如果我想执行代码:

  • 对于每个传入的请求,我应该将其放在哪里?我们正在捕获会话信息,这些信息涉及哪些人何时查看哪些页面,以及这些页面做了什么,等等
  • 只有一次应用程序启动时,我应该把它放在哪里?我需要初始化应用程序中许多地方使用的许多应用程序/系统变量。把代码放在哪里最合适
  • 如果有人能给我指一些文档或教程,说明GAE/Python应用程序的最佳体系结构实践是什么,而没有编程方面的基础知识,那就太好了。

    问题1: 一些web框架(Django、KAY等)有中间件的概念。您可以创建自己的中间件,该中间件将在每个请求上执行并处理此类信息 (见:)

    问题2: 预热请求(请参阅:)


    尽管由于预热请求不能保证运行,但您可以放置一个全局变量,让实例知道它是否已“初始化”,并在每次页面加载时检查该变量(这将很便宜,因为该变量将存在于内存中,并且存在于请求之间)。如果未设置,则根据需要运行“预热”。

    关于中间件的想法,我已尝试避免使用Django和类似工具,因为我远离SQL,而非SQL解决方案看起来并不十分稳定。如果有像Drupal这样强大的追随者,我更愿意使用这样的解决方案,但事实似乎并非如此。因此,如果您愿意的话,我正在滚动我自己的框架。你知道有什么地方描述了如何独立于Django等构建自己的中间件吗?关于预热,当你说每个页面加载时,你的意思是在main.py的顶部放一些东西,还是可以放在每个.py文件的顶部,或者放在.py文件的basehandler函数中?我真的不明白这些文件中不同部分的逻辑是什么时候执行的。我会尝试将您的框架建立在一些当前的和有效的基础上。Django可以很好地与AppEngine配合使用,像KAY这样的框架(我在其上构建了一个生产应用程序)有很多强大的功能,您可以利用这些功能。也许你可以用现有的框架中的一个来构建你自己的特性?您可以在中间件类中或在您描述的每个.py文件之上进行预热检查,尽管后者是一种混乱的方式。中间件是一个WSGI概念,几乎每个Python框架都使用WSGI。appengine上有很多支持良好的框架;滚动你自己的几乎肯定是在浪费你的时间。也许我对Google App Engine/Python最大的失望是,似乎没有任何地方可以找到各种模块的列表,并按类型列出评分和评论。当我决定尝试使用Django Norel时,我发现的第一件事是来自主要支持者的告别通知。我是开放的,但我使用的是GAE,没有SQL,有谁能给我一些例子,说明这种环境的框架有足够的追随者,以确保至少在未来5年左右的生存?谢谢你的帮助。