我想确认一下我对Google数据存储区中最终一致性的理解.假设我有一个如下定义的实体(使用ndb):
class Record(ndb.Model):
name = ndb.StringProperty()
content = ndb.BlobProperty()
Run Code Online (Sandbox Code Playgroud)
我想我理解情景1,但我对情景2和3有疑问,所以一些建议会受到高度赞赏.
场景1: 我插入一个名为"Luca"的新记录和一个给定的内容.然后,我查询数据存储区:
qry = Record.query(name=="Luca")
for r in qry.iter():
logger.info("I got this content: %r" % r.content)
Run Code Online (Sandbox Code Playgroud)
据我所知,由于最终的一致性,刚刚插入的记录可能不是结果集的一部分.我知道如果需要的话,可以使用祖先查询.
场景2: 我读了一个名为"Luca"的现有记录,更新内容并将其写回.例如,假设我有此记录的密钥"k":
r = k.get()
r.content = "new content"
r.put()
Run Code Online (Sandbox Code Playgroud)
然后,我运行与场景1中相同的查询.当我得到结果时,假设记录是结果集的一部分(例如,因为索引已经包含名为"Luca"和密钥k的记录).我是否保证字段内容将具有新值"新内容"?换句话说,如果我更新记录,单独保留其键和索引字段,我保证会读取最新值吗?
场景3:我的做法与场景2类似,其中k是名为"Luca"的记录的关键字:
r = k.get()
r.content = "new content"
r.put()
Run Code Online (Sandbox Code Playgroud)
但后来我运行了查询的修改版本:
qry = Record.query(name=="Luca")
for k in qry.iter(keys_only=True):
r = k.get()
logger.info("I got this content: %r" % r.content)
Run Code Online (Sandbox Code Playgroud)
在这种情况下,逻辑告诉我应该获取内容的最新值,因为按键读取可以保证强一致性.我很感激确认.
如何在Google Appengine上为自定义域激活SSL?
我在https://developers.google.com/appengine/docs/ssl或https://support.google.com/a/answer/2644334?hl=en上阅读的说明似乎是指旧版本Google Apps的管理控制台.
我查看了https://support.google.com/a/answer/2644334?hl=en,但在当前的控制台上,如果我执行安全性>高级设置>设置SSO,则没有地方要求提供AppEngine应用程序ID.
我查看了https://developers.google.com/appengine/docs/ssl.它指示我转到我的App域的管理控制台,并找到"域设置"选项卡,然后转到SSL子选项卡.但是,没有"域设置"选项卡,"域"选项卡只允许我添加域(不提及http/https).
那么,如何为使用自定义域的appengine应用程序设置SSL?
注意:几年前StackOverflow已经提出了这个问题,但谷歌仪表板从那时起已经发生了变化,我找到的信息已经不再适用了.
我试图将文本输入字段的宽度设置为总页面宽度的百分比,如下所示:
<input type="text" id="url" NAME="otherSite" size="70%" value=""/>
Run Code Online (Sandbox Code Playgroud)
这似乎不起作用.我似乎只能用绝对术语指定输入字段的宽度.
没有去javascript,有什么简单的方法吗?我试图让它在桌面和移动设备上看起来都很好,其中窗口的大小可能非常不同.