我将来自blobstore的静态KML作为我保存到blobstore的文件提供
class KMLHandler2(blobstore_handlers.BlobstoreDownloadHandler):
def get(self):
resource = 'AMIfv965WtxAc_rWOVjSSx423_oe6f-g5obWYNKX5scg-1gqvISyaZCnv6lRaqro2wOVNOogttyMOylFLsRYZ3Y9UYIe-A69vAt4pdJB2-SHUcdVEM2v0XVLxzT3fTlxwXQVhzmsHPwALH_rCSFIvmYcuV37asVD0Q'
resource = str(urllib.unquote(resource))
blob_info = blobstore.BlobInfo.get(resource)
self.send_blob(blob_info)这是可行的,但我想要定期更新文件。文件是从/list.kml生成的,所以我可以直接从那里读取它,但是它超时了,所以我的计划是让我的第一个appenine任务从list.kml读取文件,并使用相同的键将其写入blobstore,但是当唯一的示例是如何创建新文件时,我该如何做呢?我在代码中有更新数据层的地方,但不是很频繁。当我更新文件时,你能建议我怎么做吗?我想我希望密钥和id相同,并替换旧的blob,而不是编写一个新的并刷新密钥。你能帮帮我吗?应用引擎文档说如何写一个blobstore文件,但只是一个新的,我不知道如何编辑或替换一个文件,因为它是关键的,我认为这是我需要做的作为一个任务或cron工作,所以我请求你的帮助。
我可以像文档中那样创建一个处理程序,但这是为了创建一个文件,而不是修改/替换一个文件:
class CreateKMLHandler(webapp2.RequestHandler):
def get(self):
# Create the file
file_name = files.blobstore.create(mime_type='application/octet-stream')
# Open the file and write to it
with files.open(file_name, 'a') as f:
f.write('data')
# Finalize the file. Do this before attempting to read it.
files.finalize(file_name)
# Get the file's blob key
blob_key = files.blobstore.get_blob_key(file_name)谢谢
更新
我尝试这段代码来创建一个新文件,但是它得到了一个截止期错误applicationerror 5,我认为这是一个超时问题。我怎样才能把它变成一项任务呢?
class CreateKMLHandler(webapp2.RequestHandler):
def get(self):
# Create the file
file_name = files.blobstore.create(mime_type='application/octet-stream')
url = 'http://montaoproject.appspot.com/list.kml'
result = urlfetch.fetch(url)
if not result.content:
return
# Open the file and write to it
with files.open(file_name, 'a') as f:
f.write(result.content)
# Finalize the file. Do this before attempting to read it.
files.finalize(file_name)
# Get the file's blob key
blob_key = files.blobstore.get_blob_key(file_name)
self.out.write(blob_key)发布于 2012-01-23 11:59:37
一旦写入blob,就不能更改它们(只能读取或删除)。您可以使用数据存储实体来跟踪与给定KML‘文档’相关联的当前blob键。
您可能还会对云存储API ( http://code.google.com/appengine/docs/python/googlestorage/overview.html )感兴趣,它允许您通过创建具有相同名称的新对象来覆盖“存储桶”对象。
https://stackoverflow.com/questions/8958187
复制相似问题