2011-07-01 42 views
3

我在使用App Engine和Python。爲了存儲我的用戶的圖像,我將它們直接寫入到blobstore,如Google documentation中所示。將文件直接寫入Blobstore時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(我的代碼的最後一行)時,我可以看到圖像是否已經保存到Blobstore中。

當它工作,我有顯示以下行:

Blobkey: AMIfv94p1cFdqkZa3AhZUF2Tf76szVEwpGgwOpN... 

當它不工作,我有這個在我的日誌:

Blobkey: None 

最後的細節:圖像(自我。 imageContent)在每次寫入之前進行預處理並轉換爲.JPEG。

編輯:
每次,將圖像存儲在Blob存儲區(我可以看到他們在管理控制檯中的blobviewer)。所以這就是發生故障的get_blob_key函數...

我想知道在這種情況下該怎麼辦?我做錯了什麼,導致App Engine行爲不穩定。我該如何解決這個問題?

+0

儘管它是關於Java API的似乎與此相關的缺陷http://code.google.com/p/googleappengine/issues/detail?id=4872 – systempuntoout

+0

最後一個人在螺紋4944是我:-(我實施了名稱空間的解決方法,但它對我的問題沒有影響...... – Damien

+0

ok :),你檢查了第二個鏈接嗎?你在使用人力資源數據存儲嗎? – systempuntoout

回答

3

我終於通過了50ms

這間隔期間使線程睡眠來解決這個問題是我添加的代碼:

# 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中的人差不多。

謝謝。請隨時添加任何建議。

相關問題