google-app-engine - 将(大型二进制)数据传递给应用引擎任务

标签 google-app-engine

我有一个任务端点需要处理从前端请求上传的数据(比如 >1MB 的文件)。但是,我认为我无法通过 TaskOptions.Builder 传递来自前端请求的数据,因为我会收到“任务大小太大”错误。

我需要某种“临时”数据存储来存储上传的数据,一旦任务成功处理它就可以将其删除。

方案A:将上传的数据存储在memcache中,将key传给task。这可能在大多数情况下都有效,除非在处理任务之前数据被逐出。如果可以解决这个问题,听起来是个不错的解决方案。

选项 B:将数据存储在数据存储中(为此目的创建的实体)。将 id 传递给任务。该任务负责在完成时删除实体。

选项 C:使用 Blobstore 服务。恕我直言,这在概念上类似于选项 B。

目前,我认为方案B是最可行的方式。

感谢任何有关处理这些情况的最佳方法的建议。

最佳答案

如果要存储大于 1mb 的数据,则必须使用 blobstore。 (是的,您可以对数据存储中的数据进行分段,但这样做不值得。)但是,有两件事需要注意。确保以小于 1mb 的 block 将数据写入 blobstore。此外,由于任务队列是幂等的,如果请求的 blobstore key 不存在,您的任务不应失败,因为之前的任务可能已经删除了它。

关于google-app-engine - 将(大型二进制)数据传递给应用引擎任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8677196/

相关文章:

google-app-engine - 是否可以在谷歌应用引擎中托管静态 html 网站?

java - 项目再次启动(更新)后如何保护我的数据库值?

android - 通过Objectify以SQL语句的形式从App Engine中导出数据构建S​​QLite数据库

java - 如何在 Eclipse 中自动为 App Engine 项目创建 EAR 目录结构?

python - 如何保护我在 Google App Engine 中内部用于推送队列的 URL?

java - 如何在 GAE/J 上创建 OAuth HMAC-SHA1 签名?

java - 通过 Google App Engine servlet 上传 ZIP,并将内容保存到 Cloud Storage (Java)

google-app-engine - 数据存储中的祖先关系

python - GAE列表桶文件返回void

python - NoseGAE 无法在应用程序根目录中导入 .py 文件