我使用flask框架创建了一个基本的python web应用程序,并将其部署在谷歌应用程序引擎上。因此,我使用GAE memcache API存储JSON数据,其中键和命名空间为整数类型,并在本地工作,但是一旦我将代码部署到app引擎,它就会抛出错误at least one of key or namespace should be <type> string
。
我将我的memcache密钥和命名空间更改为类型字符串,它可以工作。有人可以帮助我理解为什么它在本地支持整数作为键和命名空间,但是一旦部署它失败了。这是一个错误吗?
答案 0 :(得分:1)
来自google.appengine.api.memcache package:
任何采用'key'参数的方法都会接受该键作为 string(unicode与否)或元组(hash_value,string)所在的 hash_value,通常用于分片到memcache实例,是 而忽略了,因为谷歌App Engine处理分片 透明。 memcache中的键只是字节,没有指定 编码。如果提供了伪造的密钥,所有这些方法都可能引发TypeError 如果键太大,则为value和ValueError。
本地开发服务器仅尝试模拟实际的GAE基础设施。功能的某些方面并未完全模拟,有些方面根本没有效仿 - 你提到的那个并不是唯一的方面。在实际部署中仔细检查您的假设总是一个好主意,至少现在和将来,特别是在探索新的GAE功能时,以防止在您的应用程序的基础中包含错误的假设,这将需要大量的重新 - 稍后工作去过那里,完成了:))