2009-11-06 66 views
0

我正在寫一個聚合應用程序,它從一些Web源中提取數據,並用一個新穎的界面顯示這些數據。我每隔幾分鐘就會更新一次我正在抓取的網站,並且要確保我的聚合器上的數據是最新的。如何定期將數據上傳到Google App Engine?

從自動化腳本中定期向App Engine應用程序提交新數據的最佳方式是什麼?

約束:

  1. 該應用程序是用Python編寫的。

  2. 每個站點的抓取過程需要一秒以上的時間,因此我無法處理App Engine處理程序中的數據。

  3. 更新腳本運行的主機是共享的,所以我寧願不將我的密碼存儲在磁盤上。

  4. 我想檢查應用程序的代碼到我們的代碼庫。雖然我的同事不是惡意的,他們是惡作劇,我想阻止他們將假數據插入我的應用程序。

  5. 我知道App Engine支持一些remote_api,但我必須將該入口放在身份驗證後面(請參閱約束3)或隱藏URL(請參閱約束4)。

建議?

+0

如果你不能相信你的同事不干擾生產應用程序,你需要新的夥伴! – 2009-11-06 20:28:03

回答

3

編寫任務隊列任務或App Engine cron作業來處理此任務。我不確定您聽說在任何類型的App Engine操作上有1秒的限制 - 請求被限制爲30秒,並且URL抓取的最大截止時間爲10秒。

+0

啊!我認爲極限是1秒。謝謝! – 2009-11-09 21:54:42

0

將數據導入AppEngine的唯一方法是調用您的Web應用程序(作爲Web應用程序)並通過通常的HTTP-ish方式向其提供數據,即作爲GET請求的參數(用於簡短數據)或POST(如果長或二進制)。

換句話說,您將不得不製作自己的小型數據採集器,您將以Web應用程序的形式訪問這些數據採集器,然後將數據存入AppEngine後面的數據庫。

您可能會希望至少對該應用程序提供密碼保護,以免任何人將虛假數據加載到您的應用程序中。

0

你能把分解過程分成獨立的塊,每個塊可以在一個appengine請求的時間範圍內完成嗎? (它可以運行超過一秒btw)。然後你可以使用任務API產生一堆任務,當它們結合時,完成全部刮擦。然後使用cron API每隔N分鐘產生一次這些任務。

0

我問了一圈,有的朋友提出了兩種解決方案:

  • 上傳與共享的祕密令牌的文件與應用程序一起,但提交到代碼庫時,更改令牌。

  • 使用一行祕密令牌創建一個小型數據存儲模型。

在這兩種情況下,令牌都可以用於驗證用於上傳新數據的POST請求。

相關問題