- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我是 Python 和 App Engine(以及服务器端!)新手,我正在尝试创建非常简单的 CMS。应用程序的每个部署都会有一个 - 而且只有一个 - 公司对象,从类似以下内容实例化:
class Company(db.Model):
name = db.StringPropery()
profile = db.TextProperty()
addr = db.TextProperty()
我正在努力提供便利来更新公司简介和其他详细信息。
我的第一个想法是拥有一个 Company 实体单例。但是看过了(虽然远未完全掌握)this thread我的印象是这样做很困难,也是不可取的。
然后我想,也许对于 CMS 的每次部署,我都可以一次性运行一个脚本(由一个完全模糊的 URL 触发),它只是实例化 Company。从那时起,我将使用 theCompany = Company.all()[0]
这是否可取?
然后我想起那个线程中有人建议只使用一个模块。所以我刚刚创建了一个 Company.py 文件并在其中插入了一些变量。我在 SDK 中尝试过这个,它似乎工作 - 令我惊讶的是,修改后的变量值在请求之间“幸存”。
请原谅我的无知,但是,我假设这些值只保存在内存中而不是磁盘上——不像数据存储的东西?这是一个可靠的解决方案吗? (模块变量是否在我应用程序脚本的所有调用的范围内?)
最佳答案
全局变量是“app-cached”。这意味着您的应用程序的每个特定实例将在请求之间记住这些变量的值。但是,当实例关闭时,这些值将丢失。因此,我认为您真的不想将这些值存储在模块级变量中(除非它们是不需要更新的常量)。
我认为您的原始解决方案可以正常工作。您甚至可以使用 remote API 创建原始实体工具,这样您就不需要模糊的页面来实例化唯一的 Company
对象。
如果您通过键检索单例 Company
实体,您还可以更快地检索它。
如果您需要经常检索此实体,则可以使用缓存技术避免往返数据存储区。最快的方法是在从数据存储中检索到 Company
实体后对其进行应用缓存。为了防止实体变得太过时,您还可以应用程序缓存上次检索实体的时间,如果该时间超过 N 秒,那么您可以从数据存储中重新获取它。有关此选项的更多详细信息以及它与替代方案的比较,请查看 Nick Johnson 的文章 Storage options on App Engine .
关于python - 单例的替代品?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4208390/
我最近购买了《C 编程语言》并尝试了 Ex 1-8这是代码 #include #include #include /* * */ int main() { int nl,nt,nb;
早上好!我有一个变量“var”,可能为 0。我检查该变量是否为空,如果不是,我将该变量保存在 php session 中,然后调用另一个页面。在这个新页面中,我检查我创建的 session 是否为空,
我正在努力完成 Learn Python the Hard Way ex.25,但我无法理解某些事情。这是脚本: def break_words(stuff): """this functio
我是一名优秀的程序员,十分优秀!