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