漠然としたタイトルではないと言えば、これをどのように述べるべきか分かりませんでした。try-except-finallyの不思議な挙動
URLからデータを取得してblobstoreに書き込み、データのblob_keyをデータストアのListPropertyに保存するタスクワーカーリクエストハンドラがあります。私はここで明確にするためのコードをsimpliflyしようとしました:
saveDataResultがTrueを返すとき、今私がいる問題は、そのステータスは「成功」に設定されているが、そのblobKeyにプロパティでも、値が含まれていません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
blob_keyが生成され、データが正常に書き込まれました。私はこれが私の人生を救う原因になっているのを見ることができません、助けてください。
'blob_key'(' item.blobKey'ではなく)が値を取得する部分を表示していないか、それとも問題でしょうか? –
'blob_key'はどこで設定しますか? – cheeken
私はそれを追加しましたが、blob_keyが取得できない場合、save_dataはFalseを返すので、それはできません。それが原因ではないと私は確信しています。 – ofko