我遇到了一个错误,我无法找到根本原因。错误如下:“ReferenceProperty未能解决:[u'StatusLog',STATUSLOGSID]”。这种错误有时会发生,大约每天一次或两次。产生这种错误的脚本比失败的脚本更成功。关于错误的最奇怪的事情是它无法解析引用属性,而不应该是这种情况(就这种情况而言),因为被引用的实体永远不会被我的webapp删除。此外,我不会生成Google App Engine正在引用的密钥。下面列出了相关的代码。ReferenceProperty未能解决 - App Engine
的GAE交易:
def updateStatus(key):
hbo = HBO.get(key)
hbo.updateStatus()
hbo.put()
class HBOCRON(webapp2.RequestHandler):
def get(self):
keys = db.Query(HBO, keys_only = True).filter("inactive = ", False)
XG_ON = db.create_transaction_options(xg=True)
for key in keys: db.run_in_transaction_options(XG_ON, updateStatus, key)
app = webapp2.WSGIApplication([('/cron/hbo', HBOCRON)],debug=True)
两个其他相关功能...
def logStatus(self):
self.status = StatusLog(
hbo = self,
prev = self.status,
date = datetime.datetime.now(),
on = self.online(),
up = self.upToDate(),
dns = self.DNS_update_needed,
dis = self.manually_disabled).put()
def updateStatus(self):
status = self.status
if status is None \
or status.on != self.online() \
or status.up != self.upToDate() \
or status.dns != self.DNS_update_needed:
self.logStatus()
self.flagged = True
elif status.dis != self.manually_disabled:
self.logStatus()
回溯:
ReferenceProperty failed to be resolved: [u'StatusLog', 248327L]
Traceback (most recent call last):
File "/base/python27_runtime/python27_lib/versions/third_party/webapp2-2.3/webapp2.py", line 1511, in __call__
rv = self.handle_exception(request, response, e)
File "/base/python27_runtime/python27_lib/versions/third_party/webapp2-2.3/webapp2.py", line 1505, in __call__
rv = self.router.dispatch(request, response)
File "/base/python27_runtime/python27_lib/versions/third_party/webapp2-2.3/webapp2.py", line 1253, in default_dispatcher
return route.handler_adapter(request, response)
File "/base/python27_runtime/python27_lib/versions/third_party/webapp2-2.3/webapp2.py", line 1077, in __call__
return handler.dispatch()
File "/base/python27_runtime/python27_lib/versions/third_party/webapp2-2.3/webapp2.py", line 547, in dispatch
return self.handle_exception(e, self.app.debug)
File "/base/python27_runtime/python27_lib/versions/third_party/webapp2-2.3/webapp2.py", line 545, in dispatch
return method(*args, **kwargs)
File "/base/data/home/apps/s~hs-hbo/1.357660268729453201/api/hbo/getCheckin.py", line 88, in post
(hbo, data) = db.run_in_transaction_options(XG_ON, checkinTransaction, self.request)
File "/base/python27_runtime/python27_lib/versions/1/google/appengine/api/datastore.py", line 2476, in RunInTransactionOptions
ok, result = _DoOneTry(new_connection, function, args, kwargs)
File "/base/python27_runtime/python27_lib/versions/1/google/appengine/api/datastore.py", line 2498, in _DoOneTry
result = function(*args, **kwargs)
File "/base/data/home/apps/s~hs-hbo/1.357660268729453201/api/hbo/getCheckin.py", line 33, in checkinTransaction
hbo.updateStatus()
File "/base/data/home/apps/s~hs-hbo/1.357660268729453201/shared/datastore.py", line 116, in updateStatus
return self.logStatus()
File "/base/data/home/apps/s~hs-hbo/1.357660268729453201/shared/datastore.py", line 102, in logStatus
prev = self.status,
File "/base/python27_runtime/python27_lib/versions/1/google/appengine/ext/db/__init__.py", line 3597, in __get__
reference_id.to_path())
ReferencePropertyResolveError: ReferenceProperty failed to be resolved: [u'StatusLog', 248327L]
感谢您的任何见解/帮助/答案/建议!
请提供来自日志和实际取消引用的ReferenceProperty的代码片段的追溯 – 2012-03-23 03:48:00
I已经添加了完整的追溯到我的SO帖子。感谢您创建这样一个美妙的脚本语言a nd在Python社区中处于活跃状态。 – 2012-03-23 16:36:27