其他分享
首页 > 其他分享> > 将引擎直接写入Blobstore时App Engine的不稳定问题

将引擎直接写入Blobstore时App Engine的不稳定问题

作者:互联网

我正在将App Engine与Python配合使用.为了存储用户的图像,我将它们直接写入blobstore中,如Google documentation所示.

我的代码如下:

# 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(代码的最后一行)时,可以看到图像是否已保存到Blob存储区中.

当它起作用时,将显示以下行:

Blobkey: AMIfv94p1cFdqkZa3AhZUF2Tf76szVEwpGgwOpN...

当它不起作用时,我将其记录在日志中:

Blobkey: None

最后一个细节:对图像(self.imageContent)进行预处理,然后在每次写入之前将其转换为.JPEG.

编辑:
每次,图像都存储在blobstore中(我可以在管理控制台的blobviewer中看到它们).这就是发生故障的get_blob_key函数…

我想知道在这种情况下该怎么办?我做错了什么,导致App Engine行为不稳定.我该如何解决呢?

解决方法:

我终于设法通过使线程在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

我所做的几乎与systempuntoout提到的Issue 4872中的人员相同.

谢谢.请随时添加任何建议.

标签:blobstore,google-app-engine,image,python
来源: https://codeday.me/bug/20191208/2089832.html