GAE端点错误:预期的FooBar实例,得到FooBar()

编程入门 行业动态 更新时间:2024-10-14 12:25:41
本文介绍了GAE端点错误:预期的FooBar实例,得到FooBar()的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

我正在使用Google Cloud Endpoints管理API,并且正在努力处理一个奇怪的,随机发生的错误。

我有以下模型: <$ p $错误发生在生产中,单元测试通过属性。 facebook_id = ndb.StringProperty(required = True,indexed = True) facebook_token = ndb.StringProperty(required = True,indexed = True) $ b $ class User(ndb.Model,Entity): created = ndb.DateTimeProperty(auto_now_add = True,indexed = True) username = ndb.StringProperty(indexed = True) facebook_data = ndb.StructuredProperty(UserFacebookData,indexed = False)

创建用户

ufd = UserFacebookData(facebook_id = some_api_data,facebook_token = some_api_data) user = User(用户名= some_api_data,facebook_data = ufd) user.save()

或者更新一个

ufd = UserFacebookData(facebook_id = some_api_data,facebook_token = some_api_data) user = get_from_db(som e_api_data) user.facebook_data = ufd user.save()

(编辑:save()是一个父实体类的方法,做一个put()+一些memcached的东西)

得到,不时更新用户,以下错误:

预期的UserFacebookData实例,获得了UserFacebookData(facebook_id = u'xxx',facebook_token = xxx' ))

然而,痕迹(打印和检查ufd / UserFacebookData实例的类型)正确创建并且用户也存在

#print user.username my_username #print UserFacebookData User FacebookData(facebook_id = u'xx',facebook_token = xx')#打印类型(UserFacebookData) UserFacebookData< facebook_id = StringProperty('facebook_id',required = True), facebook_token = StringProperty('facebook_token',必需= True)>

我看不到我在想什么。有人已经体验过 - 希望能够修复它吗?这里是完整的错误堆栈 pre $ 遇到来自ProtoRPC方法实现的意外错误:BadValueError(预期的UserFacebookData实例,得到UserFacebookData(facebook_id = u' xx',facebook_token = xx')) Traceback(最近的最后一次调用):文件/base/data/home/runtimes/python27/python27_lib/versions/third_party/protorpc-1.0/protorpc/在protorpc_service_app response =方法(实例,请求)文件/base/data/home/runtimes/python27/python27_lib/versions/third_party/endpoints-1.0中的wsgi / service.py /endpoints/api_config.py,第1329行,在invoke_remote 中返回remote_method(service_instance,request)文件/base/data/home/runtimes/python27/python27_lib/versions/third_party/protorpc-1.0 /protorpc/remote.py,第412行,在invoke_remote_method 响应=方法(service_instance,请求)文件/base/data/home/apps/s~yapme-web/alpha2.377359917212322950/ api / helpers.py,第43行,方法返回f unc(* args,** kwargs)文件/base/data/home/apps/s~xx-web/alpha2.377359917212322950/api/user.py,第25行,位于users_create user = User.create(request)创建用户的文件/base/data/home/apps/s~xx-web/alpha2.377359917212322950/entities/users.py,第168行.facebook_data = facebook_data 文件/base/data/home/runtimes/python27/python27_lib/versions/1/google/appengine/ext/ndb/model.py,第1339行,位于__set__ self ._set_value(实体,值)文件/base/data/home/runtimes/python27/python27_lib/versions/1/google/appengine/ext/ndb/model.py,行1084,在_set_value $ b中$ b value = self._do_validate(value)文件/base/data/home/runtimes/python27/python27_lib/versions/1/google/appengine/ext/ndb/model.py,第1031行,在_do_validate value = self._call_shallow_validation(value)文件/base/data/home/runtimes/python27/python27_lib/versions/1/google/appengine/ext/ndb/model.py,行1223,在_call_shallow_validation 返回调用(val ue)文件/base/data/home/runtimes/python27/python27_lib/versions/1/google/appengine/ext/ndb/model.py,行1270,调用 newvalue = method (self,value)在_validate 中的文件/base/data/home/runtimes/python27/python27_lib/versions/1/google/appengine/ext/ndb/model.py,第2269行(self._modelclass .__ name__,value)) BadValueError:预期的UserFacebookData实例,获得UserFacebookData(facebook_id = u'xx',facebook_token = xx')

解决方案

我有同样的问题,并且在这里发布了答案:时发生App Engine BadValueError问题/ 33910240>。基本上这个问题是由相对导入导致的,所以python认为FooBar在不同的包中。

I'm managing an API with using Google Cloud Endpoints and am struggling with a strange, randomly happening, error. The error happens in production only, the unit tests pass property.

I have the following model:

class UserFacebookData(ndb.Model): facebook_id = ndb.StringProperty(required=True, indexed=True) facebook_token = ndb.StringProperty(required=True, indexed=True) class User(ndb.Model, Entity): created = ndb.DateTimeProperty(auto_now_add=True, indexed=True) username = ndb.StringProperty(indexed=True) facebook_data = ndb.StructuredProperty(UserFacebookData, indexed=False)

And using this to create a user

ufd = UserFacebookData(facebook_id=some_api_data, facebook_token=some_api_data) user = User(username=some_api_data, facebook_data=ufd) user.save()

or to update one

ufd = UserFacebookData(facebook_id=some_api_data, facebook_token=some_api_data) user = get_from_db(some_api_data) user.facebook_data = ufd user.save()

(Edit: save() is a method of the parent Entity class, doing a put() + some memcached stuff)

And got, from time to time when updating the user, the following error

Expected UserFacebookData instance, got UserFacebookData(facebook_id=u'xxx', facebook_token=xxx'))

Yet, traces (to print and check type of the ufd / UserFacebookData instance) showed that it's correctly created and that the user also exists

# print user.username my_username # print UserFacebookData UserFacebookData(facebook_id=u'xx', facebook_token=xx') # print type(UserFacebookData) UserFacebookData<facebook_id=StringProperty('facebook_id', required=True), facebook_token=StringProperty('facebook_token', required=True)>

I can't see what I'm missing. Has someone already experiences that - and hopefully fixed it? Here's the full error stack

Encountered unexpected error from ProtoRPC method implementation: BadValueError (Expected UserFacebookData instance, got UserFacebookData(facebook_id=u'xx', facebook_token=xx')) Traceback (most recent call last): File "/base/data/home/runtimes/python27/python27_lib/versions/third_party/protorpc-1.0/protorpc/wsgi/service.py", line 181, in protorpc_service_app response = method(instance, request) File "/base/data/home/runtimes/python27/python27_lib/versions/third_party/endpoints-1.0/endpoints/api_config.py", line 1329, in invoke_remote return remote_method(service_instance, request) File "/base/data/home/runtimes/python27/python27_lib/versions/third_party/protorpc-1.0/protorpc/remote.py", line 412, in invoke_remote_method response = method(service_instance, request) File "/base/data/home/apps/s~yapme-web/alpha2.377359917212322950/api/helpers.py", line 43, in method return func(*args, **kwargs) File "/base/data/home/apps/s~xx-web/alpha2.377359917212322950/api/user.py", line 25, in users_create user = User.create(request) File "/base/data/home/apps/s~xx-web/alpha2.377359917212322950/entities/users.py", line 168, in create user.facebook_data = facebook_data File "/base/data/home/runtimes/python27/python27_lib/versions/1/google/appengine/ext/ndb/model.py", line 1339, in __set__ self._set_value(entity, value) File "/base/data/home/runtimes/python27/python27_lib/versions/1/google/appengine/ext/ndb/model.py", line 1084, in _set_value value = self._do_validate(value) File "/base/data/home/runtimes/python27/python27_lib/versions/1/google/appengine/ext/ndb/model.py", line 1031, in _do_validate value = self._call_shallow_validation(value) File "/base/data/home/runtimes/python27/python27_lib/versions/1/google/appengine/ext/ndb/model.py", line 1223, in _call_shallow_validation return call(value) File "/base/data/home/runtimes/python27/python27_lib/versions/1/google/appengine/ext/ndb/model.py", line 1270, in call newvalue = method(self, value) File "/base/data/home/runtimes/python27/python27_lib/versions/1/google/appengine/ext/ndb/model.py", line 2269, in _validate (self._modelclass.__name__, value)) BadValueError: Expected UserFacebookData instance, got UserFacebookData(facebook_id=u'xx', facebook_token=xx')

解决方案

I had the same problem, and have posted the answer here: App Engine BadValueError when saving ndb LocalStructured entity. Basically the problem was caused by a relative import, so that python thinks FooBar are in different packages.

更多推荐

GAE端点错误:预期的FooBar实例,得到FooBar()

本文发布于:2023-11-29 11:21:38,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1646257.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:实例   错误   GAE   FooBar

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!