如何定期将数据上传到Google App Engine?

时间:2009-11-06 18:56:11

标签: python security google-app-engine automation

我正在编写一个聚合应用程序,该应用程序从几个Web源中擦除数据并使用新颖的界面显示该数据。我每隔几分钟就会更新一次的网站,我想确保我的聚合器上的数据是最新的。

从自动脚本定期向我的App Engine应用程序提交新数据的最佳方法是什么?

约束:

  1. 该应用程序是用Python编写的。

  2. 每个网站的抓取过程花费的时间超过一秒,因此我无法在App Engine处理程序中处理数据。

  3. 将运行更新程序脚本的主机,因此我不想将我的密码存储在磁盘上。

  4. 我想检查应用程序的代码到我们的代码库中。虽然我的同事不是恶意的,但他们是恶作剧者,我想阻止他们将假数据插入我的应用程序。

  5. 我知道App Engine支持一些remote_api稀疏,但我必须将该入口点置于身份验证之后(请参阅约束3)或隐藏URL(请参阅约束4)。 / p>

  6. 建议?

5 个答案:

答案 0 :(得分:3)

编写任务队列任务或App Engine cron作业来处理此问题。我不确定你在哪里听到任何类型的App Engine操作都有1秒的限制 - 请求限制为30秒,URL提取的最长期限为10秒。

答案 1 :(得分:0)

将数据导入AppEngine的唯一方法是调用您的Web应用程序(作为Web应用程序)并通过通常的HTTP-ish方式提供数据,即作为GET请求的参数(用于短数据)或POST(如果长或二进制)。

换句话说,你必须制作自己的小型数据加载器,你将作为Web应用程序访问它,然后将数据存储到AppEngine后面的数据库中。

您可能至少希望在该应用上保护密码,以便不会将虚假数据加载到您的应用中。

答案 2 :(得分:0)

您是否可以将抓取过程分解为独立的块,每个块都可以在appengine请求的时间范围内完成? (可以运行超过一秒钟)。然后,您可以使用任务API生成一堆任务,这些任务在组合时可以完成整个刮擦。然后使用cron API每N分钟生成一次这些任务。

答案 3 :(得分:0)

我问了一下,有些朋友想出了两个解决方案:

  • 使用共享密钥令牌和应用程序上传文件,但在提交代码库时,请更改令牌。

  • 创建一个小型数据存储模型,其中包含一行,一个秘密令牌。

在这两种情况下,令牌都可用于验证用于上传新数据的POST个请求。

答案 4 :(得分:0)

App引擎具有上传数据的工具。请参阅http://code.google.com/appengine/docs/python/tools/uploadingdata.html