【发布时间】:2012-02-08 05:11:43
【问题描述】:
请原谅这个模糊的标题,我不知道该怎么说。
我有一个任务工作者请求处理程序,它从 URL 获取数据并将其写入 blobstore,并将数据的 blob_key 保存到数据存储中的 ListProperty。为了清楚起见,我试图简化代码:
class Fetch(webapp2.RequestHandler):
def get(self):
url = self.request.get('url')
itemKey = self.request.get('itemKey')
item = MyModel.get(itemKey)
try:
result = urlfetch.fetch(url=url)
if result.status_code == 200:
saveDataResult = save_data(result.content, itemKey)
if saveDataResult is False:
raise Exception('error saving data')
else:
raise Exception('error fetching data: %s' % result.status_code)
item.status = 'success'
except Exception:
item.status = 'failed'
finally:
item.put()
def save_data(data, itemKey)
try:
#write data to blobstore and get its blob_key...
blob_key = files.blobstore.get_blob_key(file_name)
item = MyModel.get(itemKey)
item.blobKey.append(blob_key)
item.put()
return True
except:
return False
现在我遇到的问题是,当 saveDataResult 返回 True 时,它的状态设置为“成功”,但它的 blobKey 属性不包含任何值,即使生成了 blob_key 并且数据已成功写入。我看不出是什么原因导致这挽救了我的生命,请帮忙。
【问题讨论】:
-
您还没有显示
blob_key(不是item.blobKey)获得值的部分......或者这可能是问题所在? -
我已经添加了它,但我不能这样做,因为如果无法获取 blob_key,save_data 将返回 False。我很确定这不是原因。
标签: python google-app-engine google-cloud-datastore blobstore