2011-07-01 6 views
3

私はApp EngineをPythonで使用しています。ユーザーの画像を保存するために、Google documentationに示すように、ブロブストアに直接書き込みます。ファイルをブロブストアに直接書き込むときにApp Engineに問題が発生する

私のコードは以下の通りです:

# Image insertion in the blobstore 
file_name = files.blobstore.create(mime_type='image/jpeg') 
with files.open(file_name, 'a') as f: 
    f.write(self.imageContent) 
files.finalize(file_name) 
self.blobKey = files.blobstore.get_blob_key(file_name) 
logging.info("Blobkey: "+str(self.blobKey)) 

問題は不安定です。私は何も変えないし、昨日から時にはうまくいくこともある。どうして?ブロブキー(私のコードの最後の行)を印刷すると、イメージがブロブストアに保存されているかどうかがわかります。それが動作しない場合は

Blobkey: AMIfv94p1cFdqkZa3AhZUF2Tf76szVEwpGgwOpN... 

、私は私のログにこれを持っている:

Blobkey: None 

最終詳細:画像(自己

それが動作

は、私が表示された次の行を持っています。 imageContent)は事前処理され、各書き込みの前に.JPEGに変換されます。

EDIT:
毎回、画像は(私は、管理コンソールでblobviewerでそれらを見ることができます)ブロブストアに格納されています。これは誤動作しているget_blob_key関数です...

このような状況で私は何をすべきですか? App Engineの動作が不安定になるような何か間違ったことをしていますか?どうすれば解決できますか?私は最終的に50ミリ秒

これは私が追加されたコードでの期間中に、スレッドの睡眠をすることによってこの問題を解決するために管理

+0

これはJava Apiに関するものですが、この欠陥に関連しているようですhttp://code.google.com/p/googleappengine/issues/detail?id=4872 – systempuntoout

+0

スレッド4944の最後の人は私です:-(私は名前空間の回避策を実装しましたが、問題に影響はありませんでした。 – Damien

+0

ok :)、2番目のリンクを確認しましたか? HRデータストアを使用していますか? – systempuntoout

答えて

3

:もちろん

# Sometimes blobKey is None 
self.blobKey = files.blobstore.get_blob_key(file_name) 

# We have to make it wait til it works! 
for i in range(1,3): 
    if(self.blobKey): 
     break 
    else: 
     logging.info("blobKey is still None") 
     time.sleep(0.05) 
     self.blobKey = files.blobstore.get_blob_key(file_name) 

logging.info("Blobkey: "+str(self.blobKey)) 

、あなたが作るために時間モジュールをインポートする必要がありますそれは働く。

import time 

私はシステムパントゥーアウトが言及した問題4872の人物とほとんど同じでした。

ありがとうございました。お気軽にご意見をお寄せください。

関連する問題