我正在使用blobstoreapi将文件从S3迁移到GCS。我创建了south数据迁移脚本来更新文件的元数据:
from google.appengine.ext import blobstore
from google.appengine.api import images
class Migration(DataMigration):
def forwards(self, orm):
images = orm['core.Image'].objects.all()
for image in images:
blob_key = blobstore.create_gs_key('/gs/mybucket/' + image.name)
try:
url = images.get_serving_url(blob_key)
except images.ObjectNotFoundError:
url = ''
image.url = url
image.save()
...
当我尝试在AppEngine项目中运行脚本时:
^{pr2}$我得到了一个错误:
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "/home/user/Downloads/google_appengine/google/appengine/api/blobstore/blobstore.py", line 485, in create_gs_key
rpc = create_gs_key_async(filename, rpc)
File "/home/user/Downloads/google_appengine/google/appengine/api/blobstore/blobstore.py", line 525, in create_gs_key_async
lambda rpc: rpc.response.blob_key())
File "/home/user/Downloads/google_appengine/google/appengine/api/blobstore/blobstore.py", line 226, in _make_async_call
rpc = create_rpc()
File "/home/user/Downloads/google_appengine/google/appengine/api/blobstore/blobstore.py", line 220, in create_rpc
return apiproxy_stub_map.UserRPC('blobstore', deadline, callback)
File "/home/user/Downloads/google_appengine/google/appengine/api/apiproxy_stub_map.py", line 413, in __init__
self.__rpc = CreateRPC(service, stubmap)
File "/home/user/Downloads/google_appengine/google/appengine/api/apiproxy_stub_map.py", line 67, in CreateRPC
assert stub, 'No api proxy found for service "%s"' % service
AssertionError: No api proxy found for service "blobstore"
我发现manage.py
没有利用AppEngine dev server引导和身份验证。有人知道怎么解决这个问题吗?如何使用manage.py
中的AppEngine dev tools。在
我查找了django-rocket-engine项目,它使用了类似的想法,但它很旧,不受支持。一些api已经被Google弃用。在
这并不是我认为最理想的解决方案,但它确实起到了作用。我使用appengineremoteapi与Django模型一起使用blobstore。您需要首先修改
app.yaml
脚本:然后使用
remote_api_shell.py
脚本访问shell。您可以使用该脚本访问本地dev_appserver和远程appengine。对于本地开发应用服务器,只需使用-s localhost:8080
。请确保settings.py
中的DATABASES
正确地指向正确的数据库。在以下是使用远程API外壳的会话:
^{pr2}$相关问题 更多 >
编程相关推荐