- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用 taskqueue 和 deferred 将大型用户信息列表从 json 文件导入到数据存储区。
User
包含用户信息,包括来自不同应用的图像 url。在导入过程中,应该抓取图像并将其上传到 blob(测试时工作正常)。
我无法获取上传图像的 blob_key。而且我认为它只发生在 taskqueue/deferred 中,因为我在“普通”GET 请求处理程序中尝试过它,它工作得很好。
这是我的处理程序:
class MigrationTask(BaseHandler):
def post(self):
if not self.request.get('file'):
return
json_data = open(self.request.get('file'))
data = json.load(json_data)
json_data.close()
for datum in data['results']:
deferred.defer(push_user_to_db, datum)
这是我的功能:
@ndb.transactional(xg=True)
def _push_user_to_db(profilePicture=None, ...):
if profilePicture:
if 'url' in profilePicture:
con = urlfetch.fetch(image_url)
if con.status_code == 200:
file_name = files.blobstore.create(mime_type='application/octet-stream')
with files.open(file_name, 'a') as f:
f.write(con.content)
files.finalize(file_name)
blob_key = files.blobstore.get_blob_key(file_name) # this part is where it errs
image_url = images.get_serving_url(file_name)
# some codes here...
def push_user_to_db(kwargs):
_push_user_to_db(**kwargs)
回溯部分:
blob_key = files.blobstore.get_blob_key(file_name)
File "C:\Program Files (x86)\Google\google_appengine\google\appengine\api\files\blobstore.py", line 132, in get_blob_key
namespace='')])[0]
File "C:\Program Files (x86)\Google\google_appengine\google\appengine\api\datastore.py", line 654, in Get
return GetAsync(keys, **kwargs).get_result()
File "C:\Program Files (x86)\Google\google_appengine\google\appengine\api\datastore.py", line 629, in GetAsync
return _GetConnection().async_get(config, keys, local_extra_hook)
File "C:\Program Files (x86)\Google\google_appengine\google\appengine\datastore\datastore_rpc.py", line 1574, in async_get
pbs = [key_to_pb(key) for key in keys]
File "C:\Program Files (x86)\Google\google_appengine\google\appengine\ext\ndb\model.py", line 653, in key_to_pb
return key.reference()
AttributeError: 'Key' object has no attribute 'reference'
PS:我也尝试过 taskqueue 而不是 deferred。
编辑(1):
这是回溯:
ERROR 2015-03-03 06:32:44,720 webapp2.py:1552] 'Key' object has no attribute 'reference'
Traceback (most recent call last):
File "C:\Program Files (x86)\Google\google_appengine\lib\webapp2-2.5.2\webapp2.py", line 1535, in __call__
rv = self.handle_exception(request, response, e)
File "C:\Program Files (x86)\Google\google_appengine\lib\webapp2-2.5.2\webapp2.py", line 1529, in __call__
rv = self.router.dispatch(request, response)
File "C:\Program Files (x86)\Google\google_appengine\lib\webapp2-2.5.2\webapp2.py", line 1278, in default_dispatcher
return route.handler_adapter(request, response)
File "C:\Program Files (x86)\Google\google_appengine\lib\webapp2-2.5.2\webapp2.py", line 1102, in __call__
return handler.dispatch()
File "C:\Program Files (x86)\Google\google_appengine\lib\webapp2-2.5.2\webapp2.py", line 572, in dispatch
return self.handle_exception(e, self.app.debug)
File "C:\Program Files (x86)\Google\google_appengine\lib\webapp2-2.5.2\webapp2.py", line 570, in dispatch
return method(*args, **kwargs)
File "C:\Program Files (x86)\Google\google_appengine\google\appengine\ext\deferred\deferred.py", line 310, in post
self.run_from_request()
File "C:\Program Files (x86)\Google\google_appengine\google\appengine\ext\deferred\deferred.py", line 305, in run_from_request
run(self.request.body)
File "C:\Program Files (x86)\Google\google_appengine\google\appengine\ext\deferred\deferred.py", line 147, in run
return func(*args, **kwds)
File "C:\project directory\migration.py", line 141, in push_user_to_db
_push_user_to_db(**kwargs)
File "C:\Program Files (x86)\Google\google_appengine\google\appengine\ext\ndb\utils.py", line 179, in inner_wrapper
return wrapped_decorator(func, args, kwds, **options)
File "C:\Program Files (x86)\Google\google_appengine\google\appengine\ext\ndb\model.py", line 3759, in transactional
func, args, kwds, **options).get_result()
File "C:\Program Files (x86)\Google\google_appengine\google\appengine\ext\ndb\tasklets.py", line 325, in get_result
self.check_success()
File "C:\Program Files (x86)\Google\google_appengine\google\appengine\ext\ndb\tasklets.py", line 371, in _help_tasklet_along
value = gen.send(val)
File "C:\Program Files (x86)\Google\google_appengine\google\appengine\ext\ndb\context.py", line 999, in transaction
result = callback()
File "C:\Program Files (x86)\Google\google_appengine\google\appengine\ext\ndb\model.py", line 3767, in <lambda>
return transaction_async(lambda: func(*args, **kwds), **options)
File "C:\project directory\migration.py", line 56, in _push_user_to_db
blob_key = files.blobstore.get_blob_key(file_name)
File "C:\Program Files (x86)\Google\google_appengine\google\appengine\api\files\blobstore.py", line 132, in get_blob_key
namespace='')])[0]
File "C:\Program Files (x86)\Google\google_appengine\google\appengine\api\datastore.py", line 654, in Get
return GetAsync(keys, **kwargs).get_result()
File "C:\Program Files (x86)\Google\google_appengine\google\appengine\api\datastore.py", line 629, in GetAsync
return _GetConnection().async_get(config, keys, local_extra_hook)
File "C:\Program Files (x86)\Google\google_appengine\google\appengine\datastore\datastore_rpc.py", line 1574, in async_get
pbs = [key_to_pb(key) for key in keys]
File "C:\Program Files (x86)\Google\google_appengine\google\appengine\ext\ndb\model.py", line 653, in key_to_pb
return key.reference()
AttributeError: 'Key' object has no attribute 'reference'
最佳答案
注意!将文件写入 Blobstore使用文件 api 已被弃用。我以前遇到过这个问题。我的代码在开发服务器 (localhost) 中运行得很好,但在 App Engine 服务器上却出错了。解决方案是将文件写入Google Cloud Storage通过 Blobstore API。
关于python - 任务队列/延迟中的 blobstore,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28812896/
我正在 appengine 中开发一个应用程序,我们希望能够向离线用户提供内容。这意味着我们需要获取所有使用过的 blobstore 文件并为离线用户保存它们。我使用服务器端来执行此操作,以便只执行一
" method="post" enctype="multipart/form-data" >
我确实需要上传大于 1 Mb 的文件,所以我只有 Blobstore API。但在生产中使用它吗?知道任何问题吗? 最佳答案 我很高兴地使用了 Google 内部的等效功能(我在 Google 工作)
我想从另一个站点获取图像 (~250Kb) 并将它们保存到 blobstore 。我想使用 Blobstore,因为它的配额(5Gb 免费)与数据存储(1Gb 免费)相比。我该怎么做? GAE 文档说
我正在尝试将表单中的多个文件上传到 BlobStore。 表格: Key Name name image thumb 然后我尝试为每个上传的文件获取 BlobInfo 对象:
在我的应用程序中,我需要执行以下操作:1. 将包含图像(目前只有 jpg)和其他内容的 zip 文件上传到 BlobStore。2. 应用引擎后端应从上传的 zip 中读取条目,并将在其中找到的所有图
我正在尝试对一些使用 Blobstore API 的代码进行单元测试,但是我收到此代码的 NullPointerException : @ContextConfiguration(locations
在接下来的几天里,我必须开始编写一些报告生成函数。我需要写入调用是原子的,并让我知道存储时是否出现故障。 appengine 上的一项实验性功能允许使用 blobstore 作为文件系统。(https
上传文件名包含空格且不带文件扩展名的文本文件会引发以下异常。文件名类似于“README TXT”或“ABC DEF”。 使用 Blobstore 示例可以重现此问题。 https://develope
我有这个上传文件的jsp 文件。我添加了姓名和电子邮件表格。我希望能够跟踪上传到我的应用程序引擎 blobstore 的哪个 blob 来自哪个人。我是否必须绑定(bind)数据存储才能获取联系信息?
我尝试使用下面的代码使用curl将图像上传到blobstore,但收到以下错误“必须从blob上传回调请求调用”。 但是,如果我使用带有操作的表单,它会上传: blobstoreService.cre
我正在将数据上传到 blobstore。它应该只暂时停留在那里,并从我的 AppEngine 应用程序中上传到 Amazon S3。 看来我只能通过 BlobDonwloadHandler 获取数据,
我目前正在 Appengine 中制作一个图像共享网站,它主要按照我想要的方式工作,但有时我想要一个小版本的图像(缩略图) - 目前我正在使用 HTML 缩小它,但是当完全没有必要时,浏览器仍然会加载
我可以使用 python 中的 uploadhandler 上传文件。当我尝试获取文件的 url 时,我收到错误“Assertionerror images the service does not
关注此blobstore document 关于如何上传到 Blobstore。它显示了通过JSP + Servlet 方式上传。 由于我的应用程序基于 GWT,因此我需要调整 GWT RPC(而不是
假设我有一些文件上传表单,例如文档中的文件 https://cloud.google.com/appengine/docs/java/blobstore/ 如果我将文件 file.txt 保存到 bl
我想使用 BlobstoreInputStream 从 Blobstore 一次读取一行文本并处理该文本 123,ABC,DEF,GHI,JKL,123,456,789,123\r\n 但是 Blob
我阅读了文档,四处搜索,但仍然不知道如何将 blob 读取为字节数组。 我能够生成 PDF 文件并将它们存储在 blobstore 中。我还可以使用 serve() 为这些 blob 提供下载服务,没
我正在阅读有关 Google App Engine 中的 Blobstore 的信息。下面的代码来自示例文档。用户选择要上传的文件并单击提交后,如何将 key 放入 javascript 变量中?我可
我正在尝试使用 taskqueue 和 deferred 将大型用户信息列表从 json 文件导入到数据存储区。 User 包含用户信息,包括来自不同应用的图像 url。在导入过程中,应该抓取图像并将
我是一名优秀的程序员,十分优秀!